2

我正在用 Perl 编写一个爬虫,它必须提取驻留在同一服务器上的网页内容。我目前正在使用HTML::Extract模块来完成这项工作,但我发现该模块有点慢,所以我查看了它的源代码,发现它没有为LWP::UserAgent使用任何连接缓存。

我最后的手段是获取HTML::Extract的源代码并修改它以使用缓存,但如果可以的话,我真的想避免这种情况。有谁知道可以更好地执行相同工作的任何其他模块?我基本上只需要获取<body>元素中的所有文本,并移除 HTML 标记。

4

4 回答 4

4

我使用pQuery进行网页抓取。但我也听说过有关Web::Scraper的好消息。

这两个模块以及其他模块都出现在 SO 的答案中,以解决与您类似的问题:

于 2009-09-11T10:35:42.903 回答
1

HTML::Extract的功能看起来非常基本且无趣。如果您对 draegfun 提到的模块不感兴趣,您可以HTML::Extract使用LWP::UserAgent和您HTML::TreeBuilder自己做所有事情,根本不需要太多代码,然后您可以按照自己的条件自由地进行缓存工作。

于 2009-09-12T10:11:04.307 回答
0

我一直在使用Web::Scraper来满足我的抓取需求。提取数据确实非常好,并且因为您可以调用->scrape($html, $originating_uri)then 它也很容易缓存您需要的结果。

于 2009-09-12T12:27:31.663 回答
0

您需要实时执行此操作吗?效率低下对您有何影响?您是否连续执行任务,以便在进入下一页之前必须提取一页?为什么要避免缓存?

你的爬虫可以下载页面并将它们传递给其他东西吗?也许您的爬虫甚至可以并行运行,或者以某种分布式方式运行。

于 2009-09-16T15:31:49.397 回答