【发布时间】:2011-10-14 09:18:57
【问题描述】:
我正在尝试使用网络爬虫保存几个网页。通常我更喜欢使用 perl 的 WWW::Mechanize 模块。但是,据我所知,我尝试抓取的网站上有许多似乎难以避免的 javascript。因此我研究了以下 perl 模块
Firefox MozRepl extension 本身运行良好。我可以使用终端浏览网站,就像它在开发人员教程中显示的那样 - 理论上。但是,我对javascript一无所知,因此很难正确使用模块。
所以这里是我喜欢的来源:Morgan Stanley
对于“公司 - 截至 2011 年 10 月 14 日”下的几家上市公司,我想保存它们各自的页面。例如。单击第一家上市公司(即“1-800-Flowers.com, Inc”),将使用两个参数调用 javascript 函数 -> dtxt('FLWS.O','2011-10-14'),从而生成所需的新页面。我现在想在本地保存的页面。
使用 perl 的 MozRepl 模块,我想到了这样的事情:
use strict;
use warnings;
use MozRepl;
my $repl = MozRepl->new;
$repl->setup;
$repl->execute('window.open("http://www.morganstanley.com/eqr/disclosures/webapp/coverage")');
$repl->repl_enter({ source => "content" });
$repl->execute('dtxt("FLWS.O", "2011-10-14")');
现在我想保存生成的 HTML 页面。
同样,我想要生成的所需代码应该访问几家公司的 HTML 站点并简单地保存网页。 (这里是三个公司:MMM.N、FLWS.O、SSRX.O)
- 是否正确,我无法绕过页面的 javascript 函数,因此无法使用
WWW::Mechanize? - 在问题 1 之后,上述 perl 模块是一种可行的方法吗?
- 最后,如果您说前两个问题可以回答“是”,那么如果您能帮助我进行实际编码,那就太好了。例如。在上面的代码中,缺少的基本部分是
'save'-command。 (也许使用 Firefox 的saveDocument函数?)
【问题讨论】:
标签: javascript perl firefox