Perl Mechanize:修改页面后获取响应页面?

时间:2014-08-04 23:41:02

标签: html perl response mechanize if-modified-since

我正在尝试检索使用js和数据库加载的页面。装载大约需要2至3分钟。我能够显示它显示的页面"请等待2到3分钟以便加载页面。" 但是在加载页面后无法检索页面。

我已经尝试了以下内容:

1。)在Mechanize中使用mirror method。但是响应内容未被解码。因此该文件是胡言乱语。 (还尝试编写一个类似于镜像方法的方法,它会解码响应内容,但也不起作用。不加载新内容。)

2。)尝试添加请求标头' if-modified-since'。但是时间仍然相同,并且没有提取新内容。

任何指针或建议都会有所帮助。

TIA :)

1 个答案:

答案 0 :(得分:0)

  

它不适用于Mechanize本身,你需要先检查一下   javascript正在对页面进行操作,数据来自何处   从。然后,有两种可能性:

  • 您在加载前获取数据后,以及javascript正在下载新数据的位置,模仿perl中的javascript。查看数据是否有些编码,并使用perl进行解码。
  • 您使用Mech Firefox,然后您不需要关心javascript,因为它将由Firefox处理。如果您不想看到它,可以隐藏该应用程序。

示例:

use WWW::Mechanize::Firefox;
use HTML::TreeBuilder::LibXML;
my $mech = WWW::Mechanize::Firefox->new;
$mech->get('http://example.com/ajax.html');
my $tree = HTML::TreeBuilder::LibXML->new;
$tree->parse($mech->content);
$tree->eof;
my $something = $tree->findvalue('/html/body/div[10]/table');

以上代码未经过测试,但应该可以使用。

享受。