加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用Nokogiri在BR标签上拆分内容

发布时间:2020-12-16 20:50:43 所属栏目:百科 来源:网络整理
导读:我有一段代码我试图用nokogiri解析,看起来像这样: td class="j" a title="title text1" href="http://link1.com"Link 1/a (info1),Blah 1,br a title="title text2" href="http://link2.com"Link 2/a (info1),br a title="title text2" href="http://link3.
我有一段代码我试图用nokogiri解析,看起来像这样:
<td class="j">
    <a title="title text1" href="http://link1.com">Link 1</a> (info1),Blah 1,<br>
    <a title="title text2" href="http://link2.com">Link 2</a> (info1),<br>
    <a title="title text2" href="http://link3.com">Link 3</a> (info2),Blah 1 Foo 2,<br>
</td>

我可以使用以下内容访问td.j的源代码:
data_items = doc.css(“td.j”)

我的目标是将每个行分成一个哈希数组.我能看到的唯一逻辑分裂点是拆分BR,然后在字符串上使用一些正则表达式.

我想知道是否有更好的方法来做这个可能只使用nokogiri?即使我可以使用nokogiri来吸取3行项目,它也会让我更容易,因为我可以在.content结果上进行一些正则表达式解析.

不知道如何使用Nokogiri抓住以br结尾的行 – 我应该使用xpath吗?任何方向表示赞赏!谢谢

解决方法

如果您的数据确实是常规数据,并且您不需要< a>中的属性.元素,然后你可以解析每个表格单元格的文本形式,而不必担心< br>元素.

在html中给出了一些这样的HTML:

<table>
    <tbody>
        <tr>
            <td class="j">
                <a title="title text1" href="http://link1.com">Link 1</a> (info1),<br>
                <a title="title text2" href="http://link2.com">Link 2</a> (info1),<br>
                <a title="title text2" href="http://link3.com">Link 3</a> (info2),<br>
            </td>
            <td class="j">
                <a title="title text1" href="http://link4.com">Link 4</a> (info1),Blah 2,<br>
                <a title="title text2" href="http://link5.com">Link 5</a> (info1),<br>
                <a title="title text2" href="http://link6.com">Link 6</a> (info2),Blah 2 Foo 2,<br>
            </td>
        </tr>
        <tr>
            <td class="j">
                <a title="title text1" href="http://link7.com">Link 7</a> (info1),Blah 3,<br>
                <a title="title text2" href="http://link8.com">Link 8</a> (info1),<br>
                <a title="title text2" href="http://link9.com">Link 9</a> (info2),Blah 3 Foo 2,<br>
            </td>
            <td class="j">
                <a title="title text1" href="http://linkA.com">Link A</a> (info1),Blah 4,<br>
                <a title="title text2" href="http://linkB.com">Link B</a> (info1),<br>
                <a title="title text2" href="http://linkC.com">Link C</a> (info2),Blah 4 Foo 2,<br>
            </td>
        </tr>
    </tbody>
</table>

你可以这样做:

chunks = doc.search('.j').map { |td| td.text.strip.scan(/[^,]+,[^,]+/) }

有这个:

[
    [ "Link 1 (info1),Blah 1","Link 2 (info1),"Link 3 (info2),Blah 1 Foo 2" ],[ "Link 4 (info1),Blah 2","Link 5 (info1),"Link 6 (info2),Blah 2 Foo 2" ],[ "Link 7 (info1),Blah 3","Link 8 (info1),"Link 9 (info2),Blah 3 Foo 2" ],[ "Link A (info1),Blah 4","Link B (info1),"Link C (info2),Blah 4 Foo 2" ]
]

大块然后你可以将它转换为你需要的任何哈希形式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读