scrapy_python | Unsorted

Telegram-канал scrapy_python - Scrapy

1045

Чат создан чтобы делиться опытом о Scrapy/Python и другими парсинг технологиями. Вежливость и уважение к другим участникам группы. Троллинг не приветствуется. FAQ: https://github.com/bulatbulat48/ru-scrapy-python Работа: t.me/scrapy_jobs

Subscribe to a channel

Scrapy

что было бы проще - прилепить туда какие-то декораторы таймера как на запрос так и на отдельные функции или сделать асинхронный coverage, я даже хз проподобные средства

Читать полностью…

Scrapy

какая там в целом очередь задач еще глянут

Читать полностью…

Scrapy

короче я своим слепым глазом особых прям криминальностей не вижу (тут в панамку щас напихают эксперты еще), возможно какая-то логика немного не та, типа вызываются лишние запросы например там, где их можно получить с одной страницы а заходится при этом в каждый товар внутрь - надо проверять точно ли обязательно внутрь заходить может данные уже есть на той странице которая выше по уровню

Читать полностью…

Scrapy

а вот эти паузы они же получается не блокирующие? await asyncio.sleep(random.uniform(0.5, 1.5))

Читать полностью…

Scrapy

а async with limiter: значит что залетает в него под 100 задачек за 1 секунду и оно как-бы пытается их удержать? а лимитеру пофиг что в него пихать, в него можно разного рода задачи запихивать?

Читать полностью…

Scrapy

ну хотя, если там не 10 тыщ записей оно не должно бы обтормаживать

Читать полностью…

Scrapy

да я читаю там еще до четверти кода не дошел)) ага - limiter там аля лимитер, при этом стейт походу загружается 1 раз на старте, при условии что ретраев немного на запрос (немного же, да?). читаю дальше

Читать полностью…

Scrapy

вдруг у тебя там async def, а внутри все await await await на каждой строчке, эт тогда не факт что будет асинхронный код)))

Читать полностью…

Scrapy

ну или как-минимум, что ты подразумеваешь под асинхронной задачей? скачивание в асинхронном пуле html-страничек (что обычно самое долгое в коде) или что?

Читать полностью…

Scrapy

короче, чем долго играть в испорченный телефон, просто покажи код, на pastebin закинь, можешь "сикретные куски" поудалять, да и вообще оставить тока остовы функций

Читать полностью…

Scrapy

вопрос по-прежнему тот же

Читать полностью…

Scrapy

а почему это важно? у вас парсинг дольше чем собственно скачивание?

Читать полностью…

Scrapy

парсинг уже скачанного то есть?

Читать полностью…

Scrapy

это максимально неэффективно, а сколько раз ты к нему обращался примерно за парсинг? и что ты там хранил? вообще, что ты имеешь в виду под состоянием?

Читать полностью…

Scrapy

а можешь в виде кода это показать? интересу ради

Читать полностью…

Scrapy

если бы код был аля-улю синхронный я б рекомендовал run with coverage, но про асинхронный хз - вангую там черт ногу сломит где задержка происходит

Читать полностью…

Scrapy

я бы еще посмотрел сколько в среднем времени уходит на каждый отдельный запрос (а еще лучше время каждого запроса на графике отобразить, чтобы не было температуры по-больнице), типа вот латенси там и задержки все эти. может там наоборот, 100 запросов на этот сервак дохера и он тебе латенси по 60 секунд на запрос выдает (в отместку, бугага)

Читать полностью…

Scrapy

(для других параллельных обработок, пробегающих рядом в этом limiter'e)

Читать полностью…

Scrapy

Да, лимитеру ему все равно, какие задачи в него попадают. Он просто считает количество выполненных операций и контролирует их частоту.

Читать полностью…

Scrapy

ага await asyncio.sleep(random.uniform(0.5, 1.5))

Читать полностью…

Scrapy

а стопе, а ты еще весь такой асинхронный код в стейт записываешь который на json'е?

                progress['category'] = batch[-1]
state['last_processed_category'] = batch[-1]
state['last_processed_page'] = 1
progress['page'] = 1
progress['product_index'] = 0
save_progress(progress['category'], progress['page'], progress['product_index'])
save_current_state(state)

Читать полностью…

Scrapy

https://pastebin.com/XDbjuhhd

Читать полностью…

Scrapy

потому-что щас получается какой-то разговор слепого с глухим

Читать полностью…

Scrapy

У меня такоее было, когда в html страницы наспамили до миллиона ссылок (это не шутка). На заброшенных форумах без регистрации это норма.

Читать полностью…

Scrapy

скачивание как правило дольше обработки

Читать полностью…

Scrapy

У меня есть функция основная scrape_products:
- Инициализирует основные параметры (URL, счетчики, ограничитель запросов).
- Загружает предыдущее состояние и прогресс.
- Обрабатывает категории пакетами (по 20 штук).
- Для каждой категории в пакете создает асинхронную задачу scrape_category.
- Ожидает завершения всех задач в пакете.
- Обновляет общий счетчик товаров и сохраняет прогресс.

Функция scrape_category:

- Получает HTML-контент страницы категории.
- Извлекает иерархию категории.
- Вызывает parse_category_page для обработки товаров на странице.
- Сохраняет полученные продукты в JSON-файл.
- Обновляет прогресс и состояние после обработки категории.

Функция parse_category_page:
- Находит все блоки товаров на странице.
- Создает асинхронные задачи parse_product для каждого товара.
- Возвращает список успешно обработанных товаров.


Функция parse_product:
- Извлекает основную информацию о товаре (имя, изображение).
- Парсит характеристики товара.
- Обрабатывает информацию о ценах, если она доступна.
- При наличии цен вызывает parse_seller_page для получения дополнительной информации.

Читать полностью…

Scrapy

Да, я уже понял, что настроил велосипедов, еще и медленных

Читать полностью…

Scrapy

Задачу на обработку ( то есть парсинг товаров в категории)

Читать полностью…

Scrapy

задачу на что? на скачивание?

Читать полностью…

Scrapy

Берем пакет категорий 20 штук и для каждой создаем отдельную асинхронную задачу

Читать полностью…
Subscribe to a channel