【问题标题】:Visit Half Million Pages with Perl使用 Perl 访问 50 万页
【发布时间】:2011-04-10 14:41:19
【问题描述】:

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

谢谢,

【问题讨论】:

    标签: perl web-crawler www-mechanize


    【解决方案1】:

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

    【讨论】:

    • 完美!!!非常感谢!。我不知道你可以使用 Perl 进行多线程,在使用 perl 时从未真正寻找过这种类型的功能,在这种情况下它真的很方便。
    • 好吧,我的错。我的意思是流程。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多