首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Curb遍历URL数组

如何使用Curb遍历URL数组
EN

Stack Overflow用户
提问于 2019-08-15 01:47:26
回答 1查看 112关注 0票数 1

我需要分析这个页面的https://www.petsonic.com/snacks-huesos-para-perros/和接收信息从每个项目(名称,价格,图像,等)。问题是我不知道如何解析URL数组。如果我使用'open-uri‘,我会这样做

代码语言:javascript
复制
require 'nokogiri'
require 'open-uri'


page="https://www.petsonic.com/snacks-huesos-para-perros/"


doc=Nokogiri::HTML(open(page))
links=doc.xpath('//a[@class="product-name"]/@href')

links.to_a.each do|url|
  doc2=Nokogiri::HTML(open(url))
  text=doc2.xpath('//a[@class="product-name"]').text
  puts text
end

然而,我只被允许使用'Curb‘,这让我感到困惑

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-15 04:36:21

您可以使用curb gem

代码语言:javascript
复制
gem install curb

然后在你的ruby脚本中

代码语言:javascript
复制
require 'curb'
page = "https://www.petsonic.com/snacks-huesos-para-perros/"
str = Curl.get(page).body
links = str.scan(/<a(.*?)<\/a\>/).flatten.select{|l| l[/class\=\"product-name/]}
inner_text_of_links = links.map{|l| l[/(?<=>).*/]}
puts inner_text_of_links

其中最难的部分是正则表达式,让我们对其进行分析。要获得链接,我们只需扫描字符串中的<a>标记,然后将这些标记放入一个数组中,并将它们展平为一个数组。

代码语言:javascript
复制
str.scan(/<a(.*?)<\/a\>/)

然后我们选择与我们的模式匹配的项目。我们正在寻找您指定的类。

代码语言:javascript
复制
.select{|l| l[/class\=\"product-name/]}

现在,为了获得标记的内部文本,我们只需在regex后面进行映射

代码语言:javascript
复制
inner_text_of_links = links.map{|l| l[/(?<=>).*/]}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57499687

复制
相关文章

相似问题

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