Nokogiri xpath() '或' 运算符

作者:编程家 分类: xml 时间:2025-07-23

使用Nokogiri的xpath()方法可以轻松地在HTML或XML文档中提取我们需要的数据。不仅可以使用基本的xpath选择器来定位元素,还可以使用'或'运算符来扩展选择条件,使我们的选择更加灵活。

在使用Nokogiri的xpath()方法时,我们可以通过在xpath选择器中使用'或'运算符来同时匹配多个条件。这样,无论条件A还是条件B满足,都可以选择到我们需要的元素。

下面我们来看一个简单的例子,假设我们有一个HTML文档,其中包含了一些书籍的信息,我们想要提取其中价格为10元或者20元的书籍的名称和作者信息。

ruby

require 'nokogiri'

# 假设我们有以下HTML文档

html_doc = "

书籍1

作者1

10元

书籍2

作者2

15元

书籍3

作者3

20元

"

# 使用Nokogiri解析HTML文档

doc = Nokogiri::HTML(html_doc)

# 使用xpath选择器提取价格为10元或者20元的书籍的名称和作者信息

books = doc.xpath("//div[@class='book']/h2[(../p[@class='price']='10元') or (../p[@class='price']='20元')]")

books.each do |book|

name = book.text.strip

author = book.next_element.text.strip

puts "书籍名称:#{name}"

puts "作者:#{author}"

puts "---"

end

通过上述代码,我们可以看到,我们使用了xpath选择器`//div[@class='book']/h2[(../p[@class='price']='10元') or (../p[@class='price']='20元')]`来同时匹配价格为10元或者20元的书籍。

在这个例子中,我们使用了`//div[@class='book']`来选择所有class为'book'的div元素,然后通过`../p[@class='price']='10元'`来选择该div元素的前一个兄弟元素的class为'price'且文本内容为'10元'的元素。通过使用'或'运算符,我们可以同时选择到价格为10元或者20元的书籍的名称和作者信息。

以上就是使用Nokogiri的xpath()方法以及'或'运算符的一个简单例子。通过这种方式,我们可以根据不同的选择条件来提取我们需要的数据,使我们的爬虫或数据处理更加灵活高效。