[英]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.