2017-09-04 46 views
1

我試圖抓取一個網頁。爲此,我使用cheerio和tinyreq模塊。我的源代碼如下:通過使用node.js來掃描nodejs中網頁的動態數據

// scrape function 
function scrape(url, data, cb) { 
    req(url, (err, body) => { 
     if (err) { return cb(err); } 
     let $ = cheerio.load(body) 
      , pageData = {}; 
     Object.keys(data).forEach(k => { 
      pageData[k] = $(data[k]).text(); 
     }); 
     cb(null, pageData); 
    }); 
} 
scrape("https://www.activecubs.com/activity-wheel/", { 
    title: ".row h1" 
    , description: ".row h2" 
}, (err, data) => { 
    console.log(err || data); 
}); 

在我的代碼,在h1標籤的文本是靜態的,在H2標籤,它是動態的。當我運行代碼時,我只能獲取靜態數據,即描述字段數據爲空。通過遵循先前的StackOverflow問題,我嘗試使用幻像js來解決此問題,但它對我無效。這裏的動態數據是通過旋轉車輪獲得的數據。對於我正在使用的網站上的任何疑問,您可以檢查https://www.activecubs.com/activity-wheel/

回答

0

用戶操作能夠從Node.js的驅動CasperJS套房在高層次上,Spooky通過將Casper作爲子進程產生並通過RPC進行控制來完成此任務。 具體來說,每個Spooky實例都會生成一個運行引導腳本的子Casper進程。引導腳本設置一個JSON-RPC服務器,通過傳輸(HTTP或stdio)偵聽父Spooky實例的命令。該腳本還設置了一個JSON-RPC客戶端,通過標準輸出將事件發送到父級Spooky實例。檢查documentation

Example