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