我需要分析这个页面的https://www.petsonic.com/snacks-huesos-para-perros/和接收信息从每个项目(名称,价格,图像,等)。问题是我不知道如何解析URL数组。如果我使用'open-uri‘,我会这样做
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‘,这让我感到困惑
发布于 2019-08-15 04:36:21
您可以使用curb gem
gem install curb然后在你的ruby脚本中
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>标记,然后将这些标记放入一个数组中,并将它们展平为一个数组。
str.scan(/<a(.*?)<\/a\>/)然后我们选择与我们的模式匹配的项目。我们正在寻找您指定的类。
.select{|l| l[/class\=\"product-name/]}现在,为了获得标记的内部文本,我们只需在regex后面进行映射
inner_text_of_links = links.map{|l| l[/(?<=>).*/]}https://stackoverflow.com/questions/57499687
复制相似问题