2016-07-24 81 views
1

我正在進行網絡抓取以完成幾項任務。如何在node-js環境中使用phantomjs進行動態頁面抓取?

我已經使用node-js 請求模塊進行頁面抓取。

它工作正常,對cookie會話和所有人都很好。

但是,當時間來渲染動態網頁建立與一些JavaScript框架ANGULARBACKBONE

我想爲phantomjs克服這件事,因爲我在谷歌發現它失敗時這樣的情況是很有幫助的。

我還發現phantomjs phantom

隨着phantomjs一個橋樑的NodeJS這個橋模塊,我能夠做到的事情沒有一樣多。

var phantom = require('phantom'); 
var fs = require('fs'); 

var sitepage = null; 
var phInstance = null; 
phantom.create() 
    .then(instance => { 
     phInstance = instance; 
     console.log("Instance created"); 
     return instance.createPage(); 
    }) 
    .then(page => { 
     sitepage = page; 
     console.log("createing page"); 
     return page.open('https://paytm.com/shop/p/carrier-estrella-plus-1-5-ton-3-star-window-ac-LARCARRIER-ESTRPLAN5550519593A34?src=grid&tracker=%7C%7C%7C%7C%2Fg%2Felectronics%2Flarge-appliances%2F1-5-ton-3-star-ac-starting-at-rs-22699%7C88040%7C1'); 
    }) 
    .then(status => { 
     //console.log(status); 
     console.log("getting content of page"); 
     return sitepage.property('content'); 
    }) 
    .then(content => { 
     console.log("success"); 
     //console.log(content); 
     fs.writeFile("ok.text", content); 
     sitepage.close(); 
     phInstance.exit(); 
    }) 
    .catch(error => { 
     console.log("errr"); 
     //console.log(error); 
     phInstance.exit(); 
    }); 

上面是代碼,我正在嘗試加載一個動態網頁,它是用角框架構建的。

任何人都可以指導我相同或正確的上述代碼,我錯過了正確的事情。

+0

太寬泛的一個問題。如果您遇到確切問題,請描述它,並提供錯誤消息。 – Vaviloff

+0

我沒有遇到任何問題。或任何錯誤。我只是想知道熱的廢棄與js框架構建的網頁 –

+0

然後問具體。 '但是當渲染動態頁面時它失敗'它是如何失敗的?有什麼錯誤?只是目前你的問題太廣泛了,我們無法幫助你。 「如何刮動態網站?好...使用PhantomJS」 – Vaviloff

回答

0

在動態代碼運行之前,您正在獲取頁面內容,您需要等待加載完成。

page.open後面的塊需要等待頁面完成,如果有一個你知道從後端獲取的元素,你可以躺着等待該元素(請參閱phantomjs中的waitfor示例DOC)。