gpt4 book ai didi

html - 使用 Nokogiri::HTML 抓取 - 无法从 XPATH 获取文本

转载 作者:行者123 更新时间:2023-12-03 17:34:02 24 4
gpt4 key购买 nike

我正在尝试用 Nokogiri 抓取 html。
这是html源代码:

<span id="J_WlAreaInfo" class="wl-areacon">
<span id="J-From">山东济南</span>

<span id="J-To">
<span id="J_WlAddressInfo" class="wl-addressinfo" title="全国">
全国
<s></s>
</span>
</span>
</span>

我需要得到以下文本:山东济南

用 Firebug 检查最短的 XPATH:
//*[@id="J-From"]

这是我的 ruby 代码:
doc = Nokogiri::HTML(open("http://foo.html"), "UTF-8")
area = doc.xpath('//*[@id="J-From"]')
puts area.text

但是,它什么也不返回。
我究竟做错了什么?

最佳答案

However, it returns nothing. What am I doing wrong?



xpath() 返回一个包含匹配项的数组(它实际上称为 NodeSet):
require 'nokogiri'


html = %q{
<span id="J_WlAreaInfo" class="wl-areacon">
<span id="J-From">山东济南</span>

<span id="J-To">
<span id="J_WlAddressInfo" class="wl-addressinfo" title="全国">
全国
<s></s>
</span>
</span>
</span>
}

doc = Nokogiri::HTML(html)
target_tags = doc.xpath('//*[@id="J-From"]')

target_tags.each do |target_tag|
puts target_tag.text
end

--output:--
山东济南

编辑:您实际上可以调用text()在数组上,但它会为数组中的每个匹配返回文本的连接结果——这不是我发现有用的东西——但是因为只有一个匹配,你应该得到结果 山东济南 .您的帖子中没有任何内容表明您没有得到该结果的原因。

如果您只想要 xpath 中的单个结果,即第一个匹配项,那么您可以使用 at_xpath() :
target_tag = doc.at_xpath('//*[@id="J-From"]')
puts target_tag.text

--output:--
山东济南

关于html - 使用 Nokogiri::HTML 抓取 - 无法从 XPATH 获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30689684/

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