[英]How to use phantomjs in node-js environment for dynamic-page web scraping?
我正在從事網絡抓取工作,以完成一些任務。
我已經使用node-js request模塊進行頁面抓取。
對於cookie會話和所有會話,它運行良好,效果很好。
但是,當需要渲染動態頁面並使用一些javascript框架(例如ANGULAR或BACKBONE等) 構建動態頁面時,它將失敗。
我正在嘗試讓phantomjs克服此問題,因為我在Google上發現遇到這種情況很有幫助。
我還發現了一個用於phantom的 nodejs橋
使用phantomjs和此橋模塊,我僅能實現相同的功能。
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();
});
上面是我正在嘗試加載用角度框架構建的動態網站頁面之一的代碼。
任何人都可以在上面的代碼中指導我進行相同或正確的操作,而我缺少正確的東西。
在運行動態代碼之前,您正在獲取頁面的內容,您需要等待加載完成。
page.open后面的塊將需要等待頁面完成,如果有一個元素是從后端獲取的,則可以躺在該元素中(請參閱phantomjs文檔中的waitfor示例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.