Ruby Nokogiri在标签结束后提取文本



我有一个相当基本的问题,这意味着我可能错过了一些东西,我正在使用Nokogiri来抓取一个网站。

我想在div中的强标记结束后提取文本,如下所示:

<p style="padding-bottom:0px;"><strong>Location:</strong> Cape Town</p>

目前我的代码如下:

location = detail_page.css('p[style="padding-bottom:0px;"]').text

这显然也提供了<strong>Location:</strong>位,有没有一种方法可以在不使用正则表达式的情况下实现

之所以这么问,是因为还有其他格式相同的div包含我需要的信息,所以我不能只删除强元素。

提前感谢

Marc

您可以使用XPath:

detail_page.xpath('//p[@style="padding-bottom:0px;"]/strong/following-sibling::text()')

这将选择strong元素的兄弟节点之后的任何文本节点,这些节点又是具有值为padding-bottom:0px;style属性的p元素的子节点。

这里我会做如下操作:

require 'nokogiri'
@doc = Nokogiri::HTML.parse('<p style="padding-bottom:0px;"><strong>Location:</strong> Cape Town</p>')
@doc.at_css('p[style*="padding-bottom:0px;"] > text()').text.strip
# => Cape Town

最新更新