首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Ruby中的Nokogiri刮取特定的标题

使用Ruby中的Nokogiri刮取特定的标题
EN

Stack Overflow用户
提问于 2018-09-07 19:58:27
回答 1查看 520关注 0票数 2

我目前正在练习使用“纽约时报”最佳卖家网站进行网络抓取。我想在列表中获得第一本书的标题,并找到HTML元素:

代码语言:javascript
运行
复制
<div class="book-body">
  <p class="freshness">12 weeks on the list</p>
  <h3 class="title" itemprop="name">CRAZY RICH ASIANS</h3>
  <p class="author" itemprop="author">by Kevin Kwan</p>
  <p itemprop="description" class="description">A New Yorker gets a surprise when she spends the summer with her boyfriend in Singapore.</p>
</div>

我使用以下代码获取特定文本:

代码语言:javascript
运行
复制
doc.css(".title").text

但是,它返回列表中每一本书的标题。我如何才能得到一个专门的书名,“疯狂的亚洲富人”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-07 20:35:12

如果您查看来自doc.css(".title")的返回,您将看到它是所有标题的集合。作为Nokogiri::XML::Element对象

据我所知,CSS没有针对给定类的第一个元素的选择器。(如果我错了,肯定有人会纠正我),但是从Nokogiri::XML::NodeSet获得第一个元素仍然非常简单,因为在许多情况下,它的作用就像Array。例如:

代码语言:javascript
运行
复制
doc.css(".title")[0].text

您还可以使用xpath来选择第一个(因为XPath支持基于索引的选择),如下所示:

代码语言:javascript
运行
复制
doc.xpath(doc.xpath("(//h3[@class='title'])[1]").text

请注意:

  • Ruby索引从0开始,如第一个示例所示;
  • XPath索引从1开始,如第二个示例所示。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52228919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档