使用“包含”选择器时,Cheerio返回undefined

时间:2018-06-04 18:37:17

标签: node.js cheerio

我目前正在尝试解析this URL中的一些HTML:

我所追求的主要信息是列出的Weight。使用Chrome中的控制台,我可以发出命令:

$("th:contains(Weight)").parent()[0];

它会给我表格行,其中包含我需要的有关重量的所有信息。

我试图在Cheerio中使用它,但它只返回undefined。 这是我的Node.js代码:

var needle = require('needle');
var cheerio = require('cheerio');

function rei(product) {
    //Request page from rei.com and follow the redirect
    return needle("get", "https://rei.com/product/" + product, {
        follow_max: 5
    }).then(function(response) {
        var $ = cheerio.load(response.body);

        var test = $("th:contains(Weight)").parent()[0];
        console.log(test);
    }).catch(function(error) {
        console.log(error);
    })
};
rei(893905);

以自动方式从Rei网站获取所需信息的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

尝试一下:

var needle = require('needle');
var cheerio = require('cheerio');
var fs = require('fs');

function rei(product) {
    //Request page from rei.com and follow the redirect
    return needle("get", "https://rei.com/product/" + product, {
        follow_max: 5
    }).then(function(response) {
        var $ = cheerio.load(response.body);

        // your data in script
        var content = $('script[data-client-store="product-details"]').html();

        content = JSON.parse(content);

        for (var spec of content.specs) {
            if (spec.name == 'Weight') {
                console.log(spec.values)
            }
        }

    }).catch(function(error) {
        console.log(error);
    })
};
rei(893905);