gpt4 book ai didi

ruby - 使用 Nokogiri 定位没有标签的文本

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

我尝试使用 Nokogiri(在 Ruby 上)解析一些非常简单的 HTML:

<span>Address</span><br />
123 Main Street<br />
Sometown<br />
<span>Telephone</span><br />
<a href="tel:212-555-555">212-555-555</a><br />

<span>Hours</span><br />
M-F: 8:00-21:00<br />
Sat-Sun: 8:00-21:00<br />
<hr />

我唯一的标签是周围的 <div>对于页面内容。我想要的每一件事都以 <span>Address</span> 开头类型标签。它后面可以跟另一个 spanhr在最后。

我想以地址(“123 Main Street\nSometown”)、电话号码(“212-555-555”)和营业时间作为单独的字段结束。

有没有一种方法可以使用 Nokogiri 获取信息,或者使用正则表达式更容易做到这一点?

最佳答案

使用 Nokogiri and XPath你可以这样做:

def extract_span_data(html)
doc = Nokogiri::HTML(html)
doc.xpath("//span").reduce({}) do |memo, span|
text = ''
node = span.next_sibling
while node && (node.name != 'span')
text += node.text
node = node.next_sibling
end
memo[span.text] = text.strip
memo
end
end

extract_span_data(html_string)
# {
# "Address" => "123 Main Street\nSometown",
# "Telephone" => "212-555-555",
# "Hours" => "M-F: 8:00-21:00\n Sat-Sun: 8:00-21:00"
# }

使用合适的解析器比使用正则表达式(即 a well documented bad ideaTM )更容易、更健壮

关于ruby - 使用 Nokogiri 定位没有标签的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858306/

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