我正在用 Perl 编写一个爬虫,它必须提取驻留在同一服务器上的网页内容。我目前正在使用HTML::Extract模块来完成这项工作,但我发现该模块有点慢,所以我查看了它的源代码,发现它没有为LWP::UserAgent使用任何连接缓存。
我最后的手段是获取HTML::Extract
的源代码并修改它以使用缓存,但如果可以的话,我真的想避免这种情况。有谁知道可以更好地执行相同工作的任何其他模块?我基本上只需要获取<body>
元素中的所有文本,并移除 HTML 标记。
我正在用 Perl 编写一个爬虫,它必须提取驻留在同一服务器上的网页内容。我目前正在使用HTML::Extract模块来完成这项工作,但我发现该模块有点慢,所以我查看了它的源代码,发现它没有为LWP::UserAgent使用任何连接缓存。
我最后的手段是获取HTML::Extract
的源代码并修改它以使用缓存,但如果可以的话,我真的想避免这种情况。有谁知道可以更好地执行相同工作的任何其他模块?我基本上只需要获取<body>
元素中的所有文本,并移除 HTML 标记。
我使用pQuery进行网页抓取。但我也听说过有关Web::Scraper的好消息。
这两个模块以及其他模块都出现在 SO 的答案中,以解决与您类似的问题:
HTML::Extract
的功能看起来非常基本且无趣。如果您对 draegfun 提到的模块不感兴趣,您可以HTML::Extract
使用LWP::UserAgent
和您HTML::TreeBuilder
自己做所有事情,根本不需要太多代码,然后您可以按照自己的条件自由地进行缓存工作。
我一直在使用Web::Scraper来满足我的抓取需求。提取数据确实非常好,并且因为您可以调用->scrape($html, $originating_uri)
then 它也很容易缓存您需要的结果。
您需要实时执行此操作吗?效率低下对您有何影响?您是否连续执行任务,以便在进入下一页之前必须提取一页?为什么要避免缓存?
你的爬虫可以下载页面并将它们传递给其他东西吗?也许您的爬虫甚至可以并行运行,或者以某种分布式方式运行。