2017-06-20 28 views
0

我刮的網頁https://www.g2a.com/rising-storm-2-vietnam-steam-cd-key-global.html面臨的問題,當使用網頁抓取頁面表節點JS

我需要從表中數據的標題。

var express = require('express'); 
var fs = require('fs'); 
var request = require('request'); 
var cheerio = require('cheerio'); 
var app = express(); 

app.get('/scrape', function(req, res) { 

    url = 'https://www.g2a.com/rising-storm-2-vietnam-steam-cd-key-global.html'; 

    request(url, function(error, response, body) { 
     if (!error) { 
      var $ = cheerio.load(body); 
      var arr = []; 
      var title = $('.mp-user-rating tr td').each(function(element) { 
       var tableData = $(element).find('.mp-rating-popup'); 
       arr.push({ 'title': tableData.text() }); 
      }); 
      console.log(arr); 
     } 
     res.send(arr); 

    }); 
}) 
app.listen('8081'); 

console.log('Magic happens on port 8081'); 

exports = module.exports = app; 

這裏arr總是空的。

enter image description here

該圖像示出該表

任何幫助,將理解的結構。

回答

0

cheerio不會執行javascript,而只是解析html。如果您需要執行javascript(例如,稍後通過ajax加載內容或當應用程序是由前端構建的單頁應用程序時),則需要使用phantomjs或與electron一起使用解決方案,或者使用新的headless chrome with an abstraction。另一種方法是使用jsdom。如果您擁有要抓取的頁面(或服務器端呈現)的控制權,Jsdom非常棒,但請注意,站點錯誤會導致您的節點進程崩潰。