2017-06-20 13 views
0

を使用して、ページ・テーブルを掻き落としたときに問題に直面し、私は、テーブルのデータからタイトルを取得する必要があるWebページに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を解析します。たとえば、コンテンツが後でajax経由で読み込まれるときや、フロントエンドで作成された単一ページアプリケーションの場合など、electronのソリューションをハックするか、headless chrome with an abstractionを新しく使用する必要があります。代わりにjsdomを使用することもできます。 Jsdomは、クロールする(またはサーバー側でレンダリングする)ページを管理しているが、サイトのエラーによってノードプロセスがクラッシュする可能性があることを知っているなら、素晴らしいことです。