我正在开发一个简单的节点应用程序来从网站上抓取html表。
我正在使用cheerio(服务器端的jquery)。我从网站上获得了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 = 'http://es.finance.yahoo.com/q/cp?s=%5EJKSE/';
request(url, function (error, response, html) {
if (!error) {
var $ = cheerio.load(html);
$('#yfncsumtab .yfnc_tableout1 tr td table tbody').each(function(){
console.log($(this).text());
});
/* //I also have tried this without success
$('#yfncsumtab .yfnc_tableout1 tr td table tbody').find('tr').each(function(){
console.log($(this).text());
//Nothing in log, it breaks before
});
*/
但是请注意上面的细节(控制台选择器不会返回一个html数组,只返回原始html,所以我不能"播放"用数据来抓它。
问题来到这里。如果我在控制台中测试这个jquery选择器,它将返回raw html:
<table>...</table>
但是如果我在其他网站上测试另一个html表(带有正确的ID /类),它会将html作为数组返回:
[ <table>...</table> ]
在第一种情况下,我既不能使用.forEach()函数来解析表,因为它不是数组,也不是.toArray(),至少要转换为数组。
对我来说很奇怪......有什么帮助吗?
这是网址:https://es.finance.yahoo.com/q/cp?s=%5EJKSE/
是&#34; https&#34; (我在url字符串中尝试过http和https,但没有成功。
由于