正在使用 cheerio 解析 HTML 文件
Parsing HTML File using cheerio
我有一份 HTML 文档,我想对其进行解析。我正在尝试使用 cheerio 来解析 HTML 文件。
<ul data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0">
<li class="_1ht1 _1ht2" data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0.1:$user=xyz">
.
.
.
.
<span data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0.1:$user=xyz.0.0.$right.0.0.1.$left.0.1:0">
My Random Text
</span>
</li>
</ul>
从我的 HTML 我正在尝试使用 data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0"
提取 ul 标签的第一个实例
在第一个 li 标签中,我想提取用户,在本例中为 xyz。之后我想在代码中提到的 class 范围内找到文本。
通过 Cheerio,我尝试了以下操作:
var cheerio = require('cheerio'),
fs = require('fs');
fs.readFile('index.html', 'utf8', dataLoaded);
function dataLoaded(err, data) {
$ = cheerio.load(data);
console.log("Trying out " + JSON.stringify($("<ul data-reactid=\".0.1.0.0.1.1.0.0.0.0.1.0\">").data()));
}
它打印 Trying out {"reactid":".0.1.0.0.1.1.0.0.0.0.1.0"}
如何获取 HTML 中的值?
注意:xyz 是动态的,它会发生变化
试试这个。基本上它将你的 HTML 变成 jquery 可以使用的东西,然后它找到未排序的列表,当然你可以使查找更具体。使用 .data()
它提取 data-reactid
属性的值。
reactid = $($(data).find('ul>li>span')).data('reactid');
我的第一个答案的问题是我实际上没有找到您想从中提取 reactid
的元素。通过一些 js 摆弄,我能够将类似于您的场景的东西放在一起。在 fiddle 中注意到我使用 .html()
。事不宜迟,我们开始吧:http://jsfiddle.net/0r5k9egu/。 运行 fiddle 并且在控制台中您应该看到 .0.1.0.0.1.1.0.0.0.0.1.0.1:$user=xyz.0.0.$right.0.0.1.$left.0.1:0
如果我正确理解你的问题,我认为这对你有用:
var myDataReactId = '.0.1.0.0.1.1.0.0.0.0.1.0'
var firstLi = $("ul[data-reactid = '" + myDataReactId + "'] li")[0];
//console.log(firstLi);
var user = $(firstLi).data('reactid');
$(firstLi).find("span[data-reactid*='" + user + "']").text();
我有一份 HTML 文档,我想对其进行解析。我正在尝试使用 cheerio 来解析 HTML 文件。
<ul data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0">
<li class="_1ht1 _1ht2" data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0.1:$user=xyz">
.
.
.
.
<span data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0.1:$user=xyz.0.0.$right.0.0.1.$left.0.1:0">
My Random Text
</span>
</li>
</ul>
从我的 HTML 我正在尝试使用 data-reactid=".0.1.0.0.1.1.0.0.0.0.1.0"
提取 ul 标签的第一个实例在第一个 li 标签中,我想提取用户,在本例中为 xyz。之后我想在代码中提到的 class 范围内找到文本。
通过 Cheerio,我尝试了以下操作:
var cheerio = require('cheerio'),
fs = require('fs');
fs.readFile('index.html', 'utf8', dataLoaded);
function dataLoaded(err, data) {
$ = cheerio.load(data);
console.log("Trying out " + JSON.stringify($("<ul data-reactid=\".0.1.0.0.1.1.0.0.0.0.1.0\">").data()));
}
它打印 Trying out {"reactid":".0.1.0.0.1.1.0.0.0.0.1.0"}
如何获取 HTML 中的值?
注意:xyz 是动态的,它会发生变化
试试这个。基本上它将你的 HTML 变成 jquery 可以使用的东西,然后它找到未排序的列表,当然你可以使查找更具体。使用 .data()
它提取 data-reactid
属性的值。
reactid = $($(data).find('ul>li>span')).data('reactid');
我的第一个答案的问题是我实际上没有找到您想从中提取 reactid
的元素。通过一些 js 摆弄,我能够将类似于您的场景的东西放在一起。在 fiddle 中注意到我使用 .html()
。事不宜迟,我们开始吧:http://jsfiddle.net/0r5k9egu/。 运行 fiddle 并且在控制台中您应该看到 .0.1.0.0.1.1.0.0.0.0.1.0.1:$user=xyz.0.0.$right.0.0.1.$left.0.1:0
如果我正确理解你的问题,我认为这对你有用:
var myDataReactId = '.0.1.0.0.1.1.0.0.0.0.1.0'
var firstLi = $("ul[data-reactid = '" + myDataReactId + "'] li")[0];
//console.log(firstLi);
var user = $(firstLi).data('reactid');
$(firstLi).find("span[data-reactid*='" + user + "']").text();