2017-06-20 66 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非常棒,但请注意,站点错误会导致您的节点进程崩溃。