进行网络刮刀时的问题

时间:2017-06-20 12:58:44

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

我正在抓取网页UPDATE AlbumRoots SET identifier = replace(identifier, '%2F', '/') WHERE identifier LIKE '%%%2F%';

我需要从表数据中获取标题。

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').each(function() { var tableData = $('.marketplace-name > .mp-rating-popup'); arr.push({ 'title': tableData.text() }); }); } res.send('Check your console!') }); }) app.listen('8081'); console.log('Magic happens on port 8081'); exports = module.exports = app; 数据。

Image

图像显示表格的结构

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:-1)

所以,我去了页面并在控制台中运行了它。

var arr = [];
var title = jQuery('.mp-user-rating tr').each(function(i, element) {
   var tableData = jQuery(element).find('.mp-rating-popup');
   arr.push({ 'title': tableData.text() });
});
console.log(arr);

该数组由8个对象组成,每个对象都包含标题。

更新:

我使用您的代码提取了html信息。我认为问题是,html是由网站异步加载的,因此拉动html只会检索静态标记。你需要使用PhantomJS或chrome的无头浏览器来加载网站并允许加载异步信息,然后你就可以获取html。

请参阅此处了解有关PhantomJS的一些优秀文档:https://github.com/Medium/phantomjs