新手问题 nokogiri 怎么获取一个 html 元素自身的 text 文本但不包含起子元素的 text 文本?

rubysir · 2016年04月05日 · 最后由 rubysir 回复于 2016年04月06日 · 2030 次阅读
<body>
    <div id='div1'>111</div>
    <div id='div2'>222
        <div id='div3'>333
            <div id='div4'>444</div>
        </div>
        <div id='div33'>bbb</div>
    </div>
</body>

比如: div2 元素自身的 text 为 222.但使用 nokogiri 获取 div2 的 text 文本时,会包含 div2 的各级子元素的文本,比如 div3 和 div4 的 text 文本也包含在内。 而我只想要 div2 自身的 text 文本,即只要 222。

require 'nokogiri'
html = Nokogiri::HTML(open 'test.html')
div2_obj = html.xpath("//*[@id='div2']")
div2_text = div2_obj.to_s #这样会获取到div2各级子元素的文本

打印节点信息,然后你会发现那个数据被解析到第一个子节点喽,所以直接 div2_obj.children[0].text 就可以取到啦。

#1 楼 @watraludru 多谢!还真是!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号