首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nokogiri从列表中获取“asin”标签?

如何使用nokogiri从列表中获取“asin”标签?
EN

Stack Overflow用户
提问于 2011-04-08 12:46:46
回答 2查看 349关注 0票数 0

我正在尝试使用nokogiri从亚马逊html页面获取ASIN号码,但使用xpath没有成功。我已经用firepath尝试过了,但仍然一无所获。如果只获取URL,然后运行ruby REGEX来获取ASIN,会不会更好?如果是这样的话,正则表达式会是什么样子呢?

代码语言:javascript
复制
#!/usr/bin/env ruby -w
require 'nokogiri'
require 'open-uri'
url = "http://www.amazon.com/gp/new-releases/books/3839/ref=zg_bsnr_nav"
doc = Nokogiri::HTML(open(url))

puts doc.xpath('//zg_list').each do | node|
  p node['asin']
end

这就是当它打印出url时我得到的。

代码语言:javascript
复制
#!/usr/bin/env ruby -w
require 'nokogiri'
require 'open-uri'
url = "http://www.amazon.com/gp/new-releases/books/3839/ref=zg_bsnr_nav"
doc = Nokogiri::HTML(open(url))

l = doc.css('div.zg_image a').map { |link| 
  link['href'] 
  }
puts l # => /Introducing-ZBrush-4-Eric-Keller/dp/0470527641/ref=zg_bsnr_3839_20/183-0702383-0095048
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-08 14:01:14

对我来说,Nokogiri中的css方法比XPath更容易使用。给定您发布的URL处的HTML,以下代码应检索每个项目的“asin”属性:

代码语言:javascript
复制
doc.css("div.zg_item").map { |e| e["asin"] }

我认为正确的XPath应该是这样的:

代码语言:javascript
复制
doc.xpath("//div[contains(@class, 'zg_item') and @asin]")
票数 1
EN

Stack Overflow用户

发布于 2011-04-08 15:57:28

您可以使用CSS accessors或XPath:

代码语言:javascript
复制
#!/usr/bin/env ruby -w

require 'nokogiri'
require 'open-uri'

url = "http://www.amazon.com/gp/new-releases/books/3839/ref=zg_bsnr_nav"

doc = Nokogiri::HTML(open(url))

# CSS
# puts doc.search('div[class="zg_item zg_sparseListItem"]').each { |n| p n['asin'] }

# XPath
puts doc.search('//div[@class="zg_item zg_sparseListItem"]').each { |n| p n['asin'] }

# >> "1934356549"
# >> "0596802471"
# >> "B004M8T01Q"
# >> "0596809158"
# >> "0470943327"
# >> "B004MMEJ36"
# >> "1935182641"
# >> "B004RDOPJI"
# >> "1449390501"
# >> "1449389716"
# >> "B004IWRH4I"
# >> "0470527641"
# >> "0735650926"
# >> "1430231475"
# >> "0321751043"
# >> "B004NBZ65G"
# >> "B004TMNSJK"
# >> "0132091518"
# >> "144030842X"
# >> "1430234040"
# >> 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5590562

复制
相关文章

相似问题

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