2016-01-20 69 views
-2

我正在编写一个基本脚本来观察网页并在发生变化时与它进行交互。调整网页观察器的性能

我正在用Perl编写,使用curl来获取页面和grep来观察它的变化。

手表结构我使用的是以下

my $string = ''; 
do { 
    $string = curl -s --cookie cookie.txt "http://url.com/resource" | grep "thing_that_has_appeared" 
    } until ($string ne ''); 

它随后被传递到被用来提取信息的字符串。

页面本身作为卷曲文件下载时为16KB。

在网络带宽和处理器使用情况下,运行此操作时会看到很大的负载。

关键是要尽可能接近,这是在第二个或第二个尺度的一小部分,所以一些合理的负载是可以接受的。我只是想知道我是否会错误地做这件事,并且如果有更高效的方式来观看页面?

服务器未发出Last-Modified标头。

有没有什么方法可以指示卷曲(或者中断它)来停止下载页面,一旦我确认它没有改变?

我觉得我主要是需要见解。我的太有限了。

编辑:回复评论我已经包括循环,并指定时间跨度。

+2

curl命令只提取一次网页。如果您看到*显着负载*,那么您必须将此命令封装在一个不显示的循环中。请显示您的其他代码。你希望用这种方式回应什么样的回应时间?你可以每天检查一次吗?执行此操作的最佳方法是检查HTTP标头。你确定改变不会反映在标题中吗? – Borodin

+0

“有没有什么方法可以指导卷曲(或者可能中断它),以便在确认尚未更改时停止下载页面?”没有像Last-Modified这样的头文件,除非您下载完整内容,否则无法确认该页面是否相同。 (如果只有最后一个字节发生了变化呢?) – ThisSuitIsBlackNot

+0

什么是“thing_that_has_appeared”?这听起来像是你真的在等待特定的内容而不是简单的改变 – Borodin

回答

1

ThisSuitIsBlackNot的回答帮助:

随着LWP :: UserAgent的,你可以指定每N个字节已经被下载后调用回调函数。如果您找到了您要查找的内容,则可以在中途取消该请求。

他还参考了与libwww-perl库的Web用户代理相关的metacpan页面this

谢谢您的输入。 再一次,如果问这个问题的方式不够,对不起。