gpt4 book ai didi

ruby - 使用 Nokogiri 拆分 BR 标签上的内容

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:06 25 4
gpt4 key购买 nike

我有一段代码试图用 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), Blah 1,<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 结尾的行——我应该使用 xpaths 吗?任何方向表示赞赏!谢谢

最佳答案

我不确定使用散列数组的意义,没有示例我无法提出建议。但是,为了拆分 <br> 上的文本标签,我会这样做:

require 'nokogiri'

doc = Nokogiri::HTML('<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), Blah 1,<br>
<a title="title text2" href="http://link3.com">Link 3</a> (info2), Blah 1 Foo 2,<br>
</td>')

doc.search('br').each do |n|
n.replace("\n")
end
doc.at('tr.j').text.split("\n") # => ["", " Link 1 (info1), Blah 1,", "Link 2 (info1), Blah 1,", "Link 3 (info2), Blah 1 Foo 2,"]

这将使您更接近哈希:

Hash[*doc.at('td.j').text.split("\n")[1 .. -1].map{ |t| t.strip.split(',')[0 .. 1] }.flatten] # => {"Link 1 (info1)"=>" Blah 1", "Link 2 (info1)"=>" Blah 1", "Link 3 (info2)"=>" Blah 1 Foo 2"}

关于ruby - 使用 Nokogiri 拆分 BR 标签上的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com