【发布时间】:2016-02-03 15:37:42
【问题描述】:
我正在尝试从实时比分网站获取数据。 我将 node.js 与 express.js、request.js 和cheerio.js 一起使用以从网页获取 HTML。 它适用于 HTML 的某些部分,但不适用于活动部分。
我正在尝试从网站http://www.flashresultats.com 抓取数据。 当我使用 Chrome 开发者工具时,我可以看到 HTML 内容,但是当我使用我的 JavaScript 代码时,结果是空的。
这是我试图提取的内容的 Chrome 捕获:
这是我正在使用的代码:
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
url = 'http://www.flashresultats.fr'
request(url, function(error, response, html){
if(!error){
var $ = cheerio.load(html);
var myvar = $('#g_1_UJzOgxfc').html();
console.log(myvar);
}
else {
console.log('Error');
}
})
【问题讨论】:
-
您是否尝试过
console.log(html)来查看整个HTML 是否为空,或者是否没有带有g_1_UJzOgxfcid 的元素? -
在第一印象中,数据似乎是在原始站点上异步加载的,所以这就解释了为什么它不在页面的源中。您必须找出异步加载数据的来源,然后直接从那里加载/抓取。
-
console.log(html)显示页面的 HTML,但分数不会出现在其中。根据屏幕截图,IDg_1_UJzOgxfc存在于 HTML 中 -
你必须使用一个可以处理异步动态加载内容的刮板。或者查看他们为获取内容而进行的 Ajax 调用并对其进行逆向工程。
标签: javascript html node.js web-scraping cheerio