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