Не получение надлежащих данных при использовании многопоточных потоковPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Не получение надлежащих данных при использовании многопоточных потоков

Сообщение Anonymous »

import concurrent.futures
from lxml import html
from urllib.parse import urljoin
import constants # assuming constants.py contains relevant information
import proxy_waterfall
import time
import mongodb_utilities

# Placeholder for missing methods
# def get_variant_data(site_url): pass
# def get_image_urls(variant_data, site_url): pass
# def get_size_stock_info(site_url): pass
# def get_product_descr(variant_data, site_url): pass
# def get_color_group(site_url): pass
# def get_promo_price(variant_html): pass
# def get_category_path(variant_data, site_url): pass
# def get_gender_details(site_url): pass

def extract_data(data):
product_info = {
"product_descr": "",
"len_product_descr": "",
"gender": "",
"color_group": "",
"avail_size_list": "",
"avail_size_cnt": "-",
"site_size_cnt": "-",
"price": "-",
"outofstock_flag": "",
"picture_cnt": "",
"image_url": "",
"site_url": "",
"dtc_exclusive": "-",
'crawl_date': constants.CURRENT_DATE,
}

url = data.get('url', '')
print("Product URL ----> ", url)
if url == '':
return

headers = constants.HEADERS
if constants.COOKIES:
cookie_string = '; '.join([f"{key}={value}" for key, value in constants.COOKIES.items()])
headers['cookie'] = cookie_string

page_source = proxy_waterfall.waterfall_hits('GET', url, headers, '')
if page_source:
html_content = html.fromstring(page_source)
variant_color_list = html_content.xpath(constants.VARIANT_COLOR_LIST_XPATH) # XPath giving color variants
variant_color_list = list(set(variant_color_list))

for variant_color in variant_color_list:
site_url = urljoin('https://www.example.com', variant_color)
variant_source = proxy_waterfall.waterfall_hits('GET', site_url, headers, '')
variant_html = html.fromstring(variant_source)

# Assuming these functions return appropriate data
variant_data = get_variant_data(site_url)
images, picture_cnt = get_image_urls(variant_data, site_url)
size_info = get_size_stock_info(site_url)

for sz_info in size_info:
size = list(sz_info.keys())[0]
product_descr, len_product_descr = get_product_descr(variant_data, site_url)

product_info.update({
'product_descr': product_descr,
'len_product_descr': len_product_descr,
'color_group': get_color_group(site_url),
'avail_size_list': size,
'avail_size_cnt': "-" if size == "-" else len([size]),
'price': get_promo_price(variant_html),
'outofstock_flag': sz_info[size],
'category_path': get_category_path(variant_data, site_url),
'gender': get_gender_details(site_url),
'image_url': images,
'picture_cnt': picture_cnt
})

def main():
input_data = [
{'url': 'https://example.com/products/product1/'},
{'url': 'https://example.com/products/product2/'},
{'url': 'https://example.com/products/product3/'}
]

for _ in range(3):
input_data = mongodb_utilities.fetch_many(
input_conn, {'execution': False, 'crawl_date': constants.CURRENT_DATE}
)

wif concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
for data in input_data:
time.sleep(0.01)
executor.submit(extract_data, data)

if __name__ == "__main__":
main()
< /code>
Я скрещиваю некоторую информацию о продуктах из API веб -сайта Ecommerce. Я использую прокси и мульти -потоки (Python), но я сталкиваюсь с проблемой, для некоторых URL -адресов продукта я правильно получаю URL -адреса изображения. Но для некоторых других продуктов я получаю 0 URL -адреса изображения. Является ли их какая -либо проблема с моей прокси или мульти -потоком? , я также не получаю надлежащего объема данных. Например, если один продукт Temphas это 5 цветовых вариантов, я получаю только 4. Кто -нибудь нет, почему это происходит? Полем Но ничего не происходит.>

Подробнее здесь: https://stackoverflow.com/questions/793 ... -threading
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»