Cheerio选择为空/ null

时间:2017-04-14 19:20:07

标签: javascript node.js cheerio

所以我很感激这方面的一些帮助,尝试了一切。

let $ = cheerio.load("<html><table><tr><td>Example 1</td><td>Example 2</td></table>");
console.log($("td").text());

给出这个结果(这就是我想要的):

// Example1Example2

但是,如果我从真实网页加载URL,则相同选择的结果为空/ null。这是我加载的页面的HTML(不是我的):

<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<div class="middle"><img src="./example.jpg" /></div>
<table class="bgColor centered">
<thead>
<tr>
<th>Example header 1</th>
<th>Example header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Example 1</td>
<td>Example 2</td>
</tr>
</tbody>
</table>
</html>

这是我运行的代码。 URL没有问题。我尝试了不同的选择器,但从来没有做对。已经能够记录一些东西,但即使我使用.text()它记录整个html,类型,标签等...我可能错过了一些必要的东西。但是我把它排除在外,因为我希望简化这个问题,据我所知,我应该能够从这里记录td ... 使控制台日志留下两个空行:

let myFoo = function(theUrl) {

return new Promise(function(resolve, reject) {
    request(theUrl, function (error, response, html) {
        if (error) {
            return reject(error);
        } else {
            let $ = cheerio.load(html);
            console.log($("td").text());
            resolve();
        }
    });
});
};

编辑:

当我在console.log($);它给出了这个结果。我不确定它看起来是否合适?我是节点和啦啦队的新手。

{ [Function]
fn:
{ constructor: [Circular],
    _originalRoot:
    { type: 'root',
        name: 'root',
        attribs: {},
        children: [],
            next: null,
        prev: null,
        parent: null } },
load: [Function],
    html: [Function],
xml: [Function],
text: [Function],
parseHTML: [Function],
root: [Function],
contains: [Function],
_root:
{ type: 'root',
    name: 'root',
    attribs: {},
    children: [],
        next: null,
    prev: null,
    parent: null },
_options:
{ withDomLvl1: true,
    normalizeWhitespace: false,
    xmlMode: false,
    decodeEntities: true } }

如果我是console.log($(html));它给出了这个:

{ options:
{ withDomLvl1: true,
    normalizeWhitespace: false,
    xmlMode: false,
    decodeEntities: true } }

0 个答案:

没有答案