Использование wget параллельно, поскольку он не многопоточный

370
David Strejc

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

Я пробовал wget, но я не хочу помещать wget в фоновый режим и оборачивать его некоторым управляющим скриптом, который будет контролировать количество процессов, чтобы я не испортил свой сервер сканирования.

Я читал, что сканер BUbiNG способен выполнять 1200 запросов в секунду для одного блока, и он разработан как сканер, поэтому он передает URL-адреса между потоками. Я не хочу этого делать - у меня уже есть прямые URL.

Мне нужно следить за перенаправлениями, так как я получил только домен без знания, если есть какие-либо перенаправления, которым нужно следовать.

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

РЕДАКТИРОВАТЬ: Извините за решение, основанное на мнении - я не хотел, чтобы эта тема была основана на мнении.

Я нашел лучшее и самое элегантное решение с использованием:

parallel 

утилита командной строки. Теперь я могу использовать wget параллельно, и это был самый быстрый и простой способ.

0
Вы можете использовать `curl`? Aulis Ronkainen 5 лет назад 1
Wget быстрее, чем curl, и я могу, конечно, использовать curl. Есть ли подсказка, как использовать curl для такого большого количества URL? Я хочу проверять их так часто, как только смогу. Я создаю национальный каталог сайтов. David Strejc 5 лет назад 0
Да, ладно. У меня нет номеров производительности `curl` и` wget`. Я просто думал, что это будет достаточно быстро. Каково ваше требование о том, как быстро это должно быть? Я боюсь, что вам нужно накатить свои собственные, потому что, вероятно, нет подходящего программного обеспечения для ваших целей. Aulis Ronkainen 5 лет назад 0
Пожалуйста, удалите ваши изменения и поместите это в ответ. Jan Doggen 5 лет назад 0

0 ответов на вопрос