簡體   English   中英

如何在node-js環境中使用phantomjs進行動態頁面Web抓取?

[英]How to use phantomjs in node-js environment for dynamic-page web scraping?

我正在從事網絡抓取工作,以完成一些任務。

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

對於cookie會話和所有會話,它運行良好,效果很好。

但是,當需要渲染動態頁面並使用一些javascript框架(例如ANGULARBACKBONE等) 構建動態頁面時,它將失敗。

我正在嘗試讓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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM