首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cheerio解析HTML文件

使用cheerio解析HTML文件
EN

Stack Overflow用户
提问于 2015-07-18 09:06:35
回答 3查看 2.5K关注 0票数 0

我有一个HTML文档,我想解析它。我正在尝试使用cheerio解析HTML文件。

代码语言:javascript
复制
<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。之后,我想在代码中提到的span类中找到文本。

通过“啦啦队”,我尝试了以下几点:

代码语言:javascript
复制
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是动态的,它将发生变化。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-18 10:08:19

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

代码语言:javascript
复制
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();
票数 1
EN

Stack Overflow用户

发布于 2015-07-18 09:14:49

尝尝这个。基本上,它将HTML转换为jquery可以处理的内容,然后找到未排序的列表,当然,您可以使查找更加具体。使用.data()提取data-reactid属性值。

代码语言:javascript
复制
reactid = $($(data).find('ul>li>span')).data('reactid');
票数 0
EN

Stack Overflow用户

发布于 2015-07-18 09:46:20

我的第一个答案的问题是,我并没有真正找到您想要从其中提取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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31489562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档