目前我正在使用Mechanize和get()方法来获取每个站点,并使用content()方法检查每个主页的内容。 我有一个非常快的计算机+ 10Mbit连接,但仍然需要9个小时来检查11K站点,这是不可接受的,问题是,get()函数的速度,显然,需要获取页面,有没有办法让它更快,也许是禁用某些东西,因为我只需要检查主页面html。
谢谢,
答案 0 :(得分:14)
并行查询而不是串行查询。如果我需要这样做,我会分叉一个抓取页面的过程。 Parallel::ForkManager,LWP::Parallel::UserAgent或WWW:Curl之类的内容可能有所帮助。我倾向于Mojo::UserAgent。
答案 1 :(得分:7)
使用WWW::Curl
(特别是WWW::Curl::Multi)。我正在使用它每天抓取100M +页面。该模块在libcurl
之上是一个瘦的绑定,因此感觉有点像C-ish,但它很快并且几乎可以执行libcurl所能做的任何事情。
我不建议使用LWP :: Parallel :: UA,因为它有点慢,模块本身也没有经过深思熟虑。当我开始编写一个爬虫时,我原本考虑过分配LWP :: Parallel :: UA,但当我调查它的内部时,我决定反对它。
免责声明:我是WWW::Curl
模块的当前维护者。