Разделы · Парсеры и сбор данных
Собираю данные регулярно, софт привычный, и вот на чём споткнулся.
Ставил 200 потоков, потом снижал до 80, разница по времени невелика. Прогон рассчитан на восемь часов, встаёт примерно на середине.
$ ./sbor --potokov 120 --spisok chast-01.txt --proksi pool.txt обработано: 48 210 / 50 000 пустых ответов: 1 842
Буду признателен за конкретику.
Долго держал старую схему, пока не упёрся.
Если данные отдаются скриптом, обычный сбор их не увидит. Смотрите, откуда страница берёт содержимое: часто рядом есть простой запрос, который отдаёт то же самое в удобном виде.
До этого работало? Что менялось перед тем, как сломалось?
У нас на прошлом проекте это выглядело так.
Перед большим прогоном всегда гоняю пробу на тысяче адресов. Три минуты времени, и сразу видно, где посыплется.
Большие каталоги не надо гонять одним куском. Разбейте на части по пятьдесят тысяч, каждую с отдельным состоянием, и падение одной части перестанет ронять весь прогон.
На другой машине воспроизводится?
Уточните пару моментов, иначе гадаем.
Начинал с того же, потом переделал.
Потери записей чаще всего идут из-за коротких ответов, которые программа считает успешными. Заведите проверку на минимальный размер ответа и на наличие обязательного куска разметки.
Разметка на маркетплейсах меняется регулярно. Держите разбор в одном месте, чтобы правка занимала минуту, а не полдня.
Почти так, но одна деталь меняет вывод.
Перед большим прогоном всегда гоняю пробу на тысяче адресов. Три минуты времени, и сразу видно, где посыплется.
Держите нас в курсе.
Проверял это на своей задаче, вывод такой же.
Память ест не число потоков, а хранение всего собранного в памяти до конца прогона. Пишите результат на диск пачками, и потолок пропадёт.
Если данные отдаются скриптом, обычный сбор их не увидит. Смотрите, откуда страница берёт содержимое: часто рядом есть простой запрос, который отдаёт то же самое в удобном виде.
Расскажу, чем закончилось у меня.
Разметка на маркетплейсах меняется регулярно. Держите разбор в одном месте, чтобы правка занимала минуту, а не полдня.