所以我很感激这方面的一些帮助,尝试了一切。
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 } }