1

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

我已经尝试过以下方法:

1.)在机械化中使用镜像方法。但是响应内容没有被解码。因此该文件是乱码。(还尝试编写与镜像方法类似的方法来解码响应内容,但这也不起作用。未加载新内容。)

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

任何指示或建议都会很有帮助。

蒂亚:)

4

1 回答 1

2

它不适用于 Mechanize 本身,您需要首先检查 javascript 对页面做了什么,以及数据来自哪里。然后,2种可能性:

  • 在加载之前获取数据之后,您可以在 perl 中模拟 javascript,并且 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');

上面的代码未经测试,但应该可以工作。

享受。

于 2014-08-05T02:30:44.983 回答