3

目前我正在使用 Mechanize 和 get() 方法来获取每个站点,并使用 content() 方法检查每个主页的某些内容。我有一台非常快的计算机 + 10Mbit 连接,但检查 11K 站点仍需要 9 个小时,这是不可接受的,问题是 get() 函数的速度,显然需要获取页面,有什么方法可以让它更快,也许禁用某些东西,因为我只需要检查主页 html。

谢谢,

4

2 回答 2

14

并行而不是串行进行查询。如果我需要这样做,我会分叉一个进程来抓取页面。Parallel::ForkManager、LWP ::Parallel::UserAgentWWW:Curl之类的东西可能会有所帮助。我倾向于支持Mojo::UserAgent

于 2010-09-10T07:02:23.403 回答
7

使用WWW::Curl(特别是WWW::Curl::Multi)。我每天用它来爬取 1 亿多页。该模块是 . 之上的一个薄绑定libcurl,所以感觉有点 C-ish,但它很快并且几乎可以做任何 libcurl 能够做的事情。

我不建议使用 LWP::Parallel::UA,因为它有点慢,而且模块本身也没有经过深思熟虑。当我开始编写爬虫时,我最初考虑分叉 LWP::Parallel::UA,但当我研究它的内部时我决定反对。

免责声明:我是该WWW::Curl模块的当前维护者。

于 2010-09-10T13:03:12.540 回答