Ruby Nokogiri 已订购 HTML 标签
Ruby Nokogiri Ordered HTML tags
背景:
我正在为学习目的开发一个简单的网络抓取工具。我正在尝试从有关 Ruby 编程语言的维基百科页面中抓取 main-headings<h2>
和 sub-headings <h3>
元素。我可以单独访问其中的每一个,但我想以一种可以替换任何维基百科文章的方式编写我的代码。
主要问题:
我正在寻找一种方法来列出位于页面上 <h2>
元素之间的所有 <h3>
元素。有没有办法直接通过 Nokogiri 做到这一点,或者它会涉及使用一些 Ruby 作为变通方法吗?
基本上,我希望能够列出主标题和随附的 sub-headings,但我看不到将它们分组的方法,因为维基百科没有将它们分组在 html .
感谢您的宝贵时间。
-M
我会使用 Nokogiri 的 CSS 选择器。 Ruby 的 The Bastard's Book 对此有很好的介绍。 http://ruby.bastardsbook.com/chapters/html-parsing/
在您的情况下,您需要使用以下内容:
page.css('h2:not([id]) > span.mw-headline, h3:not([id]) > span.mw-headline')
根据我在维基百科页面的开发工具控制台中看到的内容,主标题和副标题没有 ID 属性,这就是我使用 :not([id])
pseudo-selector 的原因。它将查找所有没有 ID 的 h2 和 h3 元素。每个带有标题的嵌套跨度都有 .mw-headline
class.
如果你只想要 h3 元素(每个部分的 sub-heading),你可以只需要:
page.css('h3:not([id]) > span.mw-headline')
背景:
我正在为学习目的开发一个简单的网络抓取工具。我正在尝试从有关 Ruby 编程语言的维基百科页面中抓取 main-headings<h2>
和 sub-headings <h3>
元素。我可以单独访问其中的每一个,但我想以一种可以替换任何维基百科文章的方式编写我的代码。
主要问题:
我正在寻找一种方法来列出位于页面上 <h2>
元素之间的所有 <h3>
元素。有没有办法直接通过 Nokogiri 做到这一点,或者它会涉及使用一些 Ruby 作为变通方法吗?
基本上,我希望能够列出主标题和随附的 sub-headings,但我看不到将它们分组的方法,因为维基百科没有将它们分组在 html .
感谢您的宝贵时间。
-M
我会使用 Nokogiri 的 CSS 选择器。 Ruby 的 The Bastard's Book 对此有很好的介绍。 http://ruby.bastardsbook.com/chapters/html-parsing/
在您的情况下,您需要使用以下内容:
page.css('h2:not([id]) > span.mw-headline, h3:not([id]) > span.mw-headline')
根据我在维基百科页面的开发工具控制台中看到的内容,主标题和副标题没有 ID 属性,这就是我使用 :not([id])
pseudo-selector 的原因。它将查找所有没有 ID 的 h2 和 h3 元素。每个带有标题的嵌套跨度都有 .mw-headline
class.
如果你只想要 h3 元素(每个部分的 sub-heading),你可以只需要:
page.css('h3:not([id]) > span.mw-headline')