Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Perl高效地提取HTML内容?_Html_Perl_Html Content Extraction - Fatal编程技术网

如何使用Perl高效地提取HTML内容?

如何使用Perl高效地提取HTML内容?,html,perl,html-content-extraction,Html,Perl,Html Content Extraction,我正在用Perl编写一个爬虫程序,它必须提取驻留在同一服务器上的网页的内容。我目前正在使用该模块来完成这项工作,但我发现该模块有点慢,所以我查看了它的源代码,发现它没有使用任何连接缓存 我最后的办法是抓取HTML::提取的源代码并修改它以使用缓存,但如果可以的话,我真的想避免这样做。有人知道其他模块能更好地完成同样的工作吗?我基本上只需要抓取元素中删除HTML标记的所有文本 我用它来抓取网页。但我也听说了一些好消息 这两个模块以及其他模块已出现在与您类似的问题的答案中: HTML::

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

我最后的办法是抓取
HTML::提取
的源代码并修改它以使用缓存,但如果可以的话,我真的想避免这样做。有人知道其他模块能更好地完成同样的工作吗?我基本上只需要抓取
元素中删除HTML标记的所有文本

我用它来抓取网页。但我也听说了一些好消息

这两个模块以及其他模块已出现在与您类似的问题的答案中:


HTML::Extract
的功能看起来非常基本且无趣。如果Draefun提到的模块对您不感兴趣,您可以使用
LWP::UserAgent
HTML::TreeBuilder
自己完成
HTML::Extract
所做的一切,而不需要太多代码,然后你就可以根据自己的条件自由地使用缓存了。

我一直在使用它来满足我的刮片需求。它确实非常适合提取数据,因为您可以调用
->scrape($html,$origing_uri)
,因此也很容易缓存您需要的结果。

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


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

多亏了你的回答。我想知道,你知道你提到的哪个模块在重复提取大量HTML页面时性能更好吗?使用Web::Scraper,你至少可以传递页面内容,而不是URL。这样,您就可以在抓取之前执行自己的缓存。@阿尔文:我不知道,因为我不知道Web::Scraper、HTML::TreeBuilder或任何其他模块是如何针对pQuery执行的。根据具体的要求,它们都有各自的优缺点。顺便提一下在pQuery中删除HTML标记后获取所有文本是:pQuery($HTML_data)->find('body')->text;谢谢,你说得对,我可以并行执行任务。使用线程模块解决了瓶颈问题。