首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl WWW::Mechanize::Firefox超时实现

Perl WWW::Mechanize::Firefox超时实现
EN

Stack Overflow用户
提问于 2014-03-11 05:16:10
回答 1查看 310关注 0票数 2

我在火狐中使用了WWW::Mechanize::Firefox和MozRepl插件。通过向站点发送HTTP GET请求,代码可以正确地从站点获取内容。

我正在浏览URL列表,并向每个URL发送HTTP GET请求。

但是,如果请求挂起在特定的URL上,它将继续等待。

请注意,我指的是网页内容的一部分被加载,而一些内容仍然悬而未决的情况。如果网页从第三方站点加载了大量内容,并且如果其中一个资源(例如图像)无法加载,浏览器就会继续等待它。

我希望请求在'n‘秒后超时,这样我就可以从列表中读取下一个URL,并继续执行代码。

在WWW::Mechanize模块中,构造函数支持超时选项,如下所示:

代码语言:javascript
复制
$mech=WWW::Mechanize->new(timeout => 10);

但是,我在Perl模块的文档WWW::Mechanize::Firefox中找不到类似的选项:

http://metacpan.org/pod/WWW::Mechanize::Firefox

我试过这个:

代码语言:javascript
复制
$mech=WWW::Mechanize::Firefox->new(timeout => 10);

但我认为它不起作用,因为仍然有一些网站的请求挂起。

EN

回答 1

Stack Overflow用户

发布于 2017-06-29 21:14:48

WWW::Mechanize::Firefox使用Mozrepl来连接火狐浏览器,所以你不需要声明超时参数,因为火狐会等待页面加载。

如果你想检查站点是否真的完全加载,你应该检查你想要的元素(例如div)是否存在:

代码语言:javascript
复制
while (!$mech->is_visible( xpath => '//div[@class="myDivClassAtHtml"]')) {
          sleep 1;
}; 
# do something with your page
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22311475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档