Посетите полмиллиона страниц с помощью Perl - PullRequest
3 голосов
/ 10 сентября 2010

В настоящее время я использую Mechanize и метод get (), чтобы получить каждый сайт, и проверяю методом content () каждую главную страницу на предмет чего-либо.У меня очень быстрое соединение с компьютером + 10 Мбит, и тем не менее, для проверки 11K-сайтов потребовалось 9 часов, что неприемлемо, проблема в скорости get (), которая, очевидно, должна получить страницу,Есть ли способ сделать это быстрее, может быть, что-то отключить, так как мне нужно только проверить html главной страницы.

Спасибо,

Ответы [ 2 ]

14 голосов
/ 10 сентября 2010

Выполнять запросы параллельно, а не последовательно.Если бы мне нужно было это сделать, я бы отключил процесс захвата страницы.Может помочь что-то вроде Parallel :: ForkManager , LWP :: Parallel :: UserAgent или WWW: Curl Я склоняюсь к Mojo :: UserAgent .

7 голосов
/ 10 сентября 2010

Используйте WWW::Curl (и конкретно WWW :: Curl :: Multi ).Я использую его для сканирования более 100 миллионов страниц в день.Модуль представляет собой тонкую привязку поверх libcurl, поэтому он выглядит немного C-ish, но он быстрый и делает почти все, что может libcurl.

Я бы не рекомендовал использовать LWP :: Parallel:: UA, так как он довольно медленный, а сам модуль не очень хорошо продуман.Когда я начинал писать сканер, я первоначально думал о разветвлении LWP :: Parallel :: UA, но я решил не делать этого, когда заглянул во внутреннее устройство.1009 * модуль.

...