我有一个相当基本的问题,这意味着我可能错过了一些东西,我正在使用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