【问题标题】:facing issue when web scraping a page table using node js使用节点 js 抓取页面表时面临的问题
【发布时间】:2017-06-20 17:16:11
【问题描述】:

我正在抓取网页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 总是空的。

图片展示了表格的结构

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript node.js web-scraping screen-scraping cheerio


    【解决方案1】:

    cheerio 不执行 javascript,而只是解析 html。如果您需要执行 javascript(例如,当稍后通过 ajax 加载内容或应用程序是由前端构建的单页应用程序时),您需要使用 phantomjs 或与 electron 一起破解解决方案或使用新的headless chrome with an abstraction。另一种方法是使用jsdom。如果您可以控制要抓取的页面(或服务器端呈现它),Jsdom 非常棒,但请注意站点错误会导致您的节点进程崩溃。

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2021-11-02
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多