使用cheerio解析HTML文件

时间:2015-07-18 09:06:36

标签: jquery html parsing 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 =&#34; .0.1.0.0.1.1.0.0.0.0.1.0&#34;

提取ul标签的第一个实例

在第一个li标签中,我想提取用户,在本例中为xyz。之后我想在代码中提到的span类中找到文本。

通过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是动态的,它会改变

3 个答案:

答案 0 :(得分:1)

如果我理解你的问题,我认为这对你有用:

NAME

答案 1 :(得分:0)

试试这个。基本上它将你的HTML变成了jquery可以使用的东西,然后它找到了unsorted-list,当然你可以使find更具体。使用.data(),它会提取data-reactid属性的值。

reactid = $($(data).find('ul>li>span')).data('reactid');

答案 2 :(得分:0)

我的第一个答案的问题是我实际上没有找到你想从中提取reactid的元素。随着一些js摆弄,我能够把一些类似于你的场景放在一起。在我使用.html()的小提琴中注意到。不用多说,我们走了:http://jsfiddle.net/0r5k9egu/。运行小提琴并在控制台中看到.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