我正在抓取网页https://www.g2a.com/rising-storm-2-vietnam-steam-cd-key-global.html
我需要从表数据中获取标题。
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总是空着。
图像显示表格的结构
任何帮助都将不胜感激。
答案 0 :(得分:0)
cheerio不会执行javascript但只是解析html。如果你需要执行javascript(例如,当以后通过ajax加载内容或者应用程序是由前端构建的单页应用程序时),你需要使用phantomjs或者将{{3或者使用新的electron。另一种方法是使用headless chrome with an abstraction。如果您可以控制要爬网的页面(或服务器端渲染页面),那么Jsdom非常棒,但请注意,站点错误会导致节点进程崩溃。