jquery(cheerio)html响应表无法转换为数组(用于解析)

时间:2015-03-01 21:45:36

标签: jquery node.js web-scraping cheerio

我正在开发一个简单的节点应用程序来从网站上抓取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,但没有成功。

由于

0 个答案:

没有答案