[英]Web crawler: Using Perl's MozRepl module to deal with Javascript
我试图通过使用网络爬虫来保存几个网页。 通常我更喜欢使用perl的WWW::Mechanize
模块。 但是,据我所知,我试图抓取的网站上有许多javascripts,似乎很难避免。 因此,我研究了以下perl模块
Firefox MozRepl扩展本身运行良好。 我可以使用终端来按照开发人员教程中显示的方式导航网站 - 理论上。 但是,我不知道javascript,因此很难正确使用模块。
所以这里是我喜欢的来源: 摩根士丹利
对于“公司 - 截至10/14/2011”之下的几家上市公司,我喜欢保存各自的页面。 例如,点击第一个上市公司(即'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)
WWW::Mechanize
? 'save'-command
。 (也许使用Firefox的saveDocument
函数?) Web通过HTTP请求和响应工作。
如果您能发现正确的发送请求,那么您将得到正确的响应。
如果目标站点使用JS来形成请求,那么您可以执行JS,也可以分析它的功能,以便您可以使用所使用的语言执行相同操作。
更简单的方法是使用一个工具来捕获生成的请求,无论请求是否由JS创建,然后您可以制作您的抓取代码来创建您想要的请求。
AT&T的“Web Scraping Proxy”就是这样一个工具。
您进行了设置,然后正常浏览网站以进入您想要抓取的页面,WSP将为您记录所有请求和响应。
它以Perl代码的形式记录它们,然后您可以根据需要进行修改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.