【问题标题】:Ruby Nokogiri Ordered HTML tagsRuby Nokogiri 有序 HTML 标签
【发布时间】:2021-02-10 17:28:34
【问题描述】:

背景: 我正在开发一个用于学习目的的简单网络爬虫。我正在尝试从有关 Ruby 编程语言的维基百科页面中抓取主标题<h2> 和子标题<h3> 元素。我可以单独访问其中的每一个,但我想以可以替换任何 Wikipedia 文章的方式编写我的代码。

主要问题: 我正在寻找一种方法来列出位于页面上 <h2> 元素之间的所有 <h3> 元素。有没有办法直接通过 Nokogiri 做到这一点,或者它会涉及使用一些 Ruby 作为解决方法?

基本上,我希望能够列出主标题和随附的子标题,但我看不到将它们分组的方法,因为 Wikipedia 没有将它们分组到 html 中。

感谢您的宝贵时间。

-M

【问题讨论】:

    标签: html ruby parsing nokogiri


    【解决方案1】:

    我会使用 Nokogiri 的 CSS 选择器。 The Bastard's Book of Ruby 对此进行了很好的入门。 http://ruby.bastardsbook.com/chapters/html-parsing/

    在您的情况下,您需要使用以下内容:

    page.css('h2:not([id]) > span.mw-headline, h3:not([id]) > span.mw-headline')
    

    根据我在维基百科页面的开发工具控制台中看到的内容,主标题和副标题没有 ID 属性,这就是我使用 :not([id]) 伪选择器的原因。它将查找所有没有 ID 的 h2 和 h3 元素。每个带有标题标题的嵌套跨度都有.mw-headline 类。

    如果您只想要 h3 元素(每个部分的子标题),您可以:

    page.css('h3:not([id]) > span.mw-headline')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 2011-01-29
      • 2010-12-17
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      相关资源
      最近更新 更多