我试图通过使用网络爬虫来保存几个网页。通常,我更喜欢使用perl的WWW::Mechanize模块。然而,据我所知,我想爬的站点上有很多javascripts,似乎很难避免。因此,我研究了以下perl模块
火狐MozRepl扩展本身工作得很好。我可以使用终端导航网站,就像开发者教程中显示的那样--理论上。但是,我对javascript一无所知,因此很难正确地使用模块。
下面是我喜欢从以下来源开始的:摩根士丹利
对于几家在“公司”之下的上市公司--截至2011年10月14日--我喜欢保存它们各自的页面。例如,单击第一家上市公司(即'1-800-Flowers.com,Inc'),将使用两个参数-> dtxt('FLWS.O','2011-10-14')调用javascript函数,从而生成所需的新页面。我现在喜欢在本地保存的页面。
在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。(也许使用火狐的saveDocument功能?)发布于 2011-10-14 12:31:06
web通过HTTP请求和响应工作。
如果您能够发现要发送的适当请求,那么您将得到正确的响应。
如果目标站点使用JS来形成请求,那么您可以执行JS,或者分析它所做的事情,这样您就可以使用您正在使用的语言进行同样的操作。
一种更简单的方法是使用一个工具来捕获结果请求,无论该请求是否由JS创建,然后您就可以手工编写您的刮取代码来创建您想要的请求。
AT&T中的"Web抓取代理“就是这样一个工具。
您设置它,然后导航到您想要抓取的网页网站,WSP将记录所有的请求和响应为您。
它以Perl代码的形式记录它们,然后您可以修改这些代码以满足您的需要。
https://stackoverflow.com/questions/7765537
复制相似问题