我需要制作一个简单的网络剪贴板,以实时获取有关雅典证券交易所的一些基本信息。我选择的武器是Node.js,更具体地说是'cheerio'模块。
我想要抓取的信息在网站中表示为某些元素中的文本。这些元素嵌套在另一个元素中。一个例子是:
<span id="tickerGeneralIndex" class="style3red">
<span class="percentagedelta">
-0,50%
</span>
</span>
在这种情况下,我想要提取的数据是'-0,50%'。
我写的代码是:
var request = require('request'),
cheerio = require('cheerio');
request('http://www.euro2day.gr/AseRealTime.aspx', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var span = $('span.percentagedelta').text();
console.log(span);
}
});
此代码不会产生所需的输出。运行时,它会在控制台中记录一个空行。
为了测试目的,我试图修改我的代码:
var request = require('request'),
cheerio = require('cheerio');
request('http://www.euro2day.gr/AseRealTime.aspx', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var span = $('span.percentagedelta').attr('class');
console.log(span);
}
});
这样我在控制台中得到'percentagedelta'。这是正确的,因为我已经要求获取元素的类。当然这不是我想要的。我只是这样做,以确定'span'变量是否正确加载。
我开始怀疑这与文本中的字符有关。某些编码问题是否可能成为罪魁祸首?如果是,我该如何解决?
答案 0 :(得分:3)
http://www.euro2day.gr/AseRealTime.aspx的原始html中没有数据在&quot;%deltatata&#39; 你可以看看抛出你的html变量。
数据是通过页面上的javascript同步设置的
$("#tickerGeneralIndex .percentagedelta").html(data.percentageDelta);
使用ajax
获取页面加载http://www.euro2day.gr/handlers/data.ashx?type=3可能会更简单