我想從使用nokogiri的亞馬遜html頁面獲取ASIN號碼,但我沒有使用xpath的運氣。我已經嘗試過與firepath,我仍然沒有得到任何東西。只需獲取URL然後運行ruby REGEX來獲取ASIN會更好嗎?如果是這樣的正則表達式是什麼樣子?如何使用nokogiri從列表中獲取'asin'標籤?
#!/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時的情況。
#!/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
感謝您的xpath版本,我仍然試圖在搜索過程中使用xpath。 – Kevin 2011-04-08 15:21:10
XPath功能強大,但有時CSS訪問器是更直接的路徑。最好的辦法是看看哪一條路徑對特定搜索的阻力最小,然後跟隨它,因爲從長遠來看,隨着代碼轉移到維護模式,能夠快速掌握正在搜索的節點變得比這是更酷/更男子氣概的東西寫入。 – 2011-04-08 16:13:20
請注意,您可以通過使用XPath來直接選擇所有'asin'屬性值:'puts doc.xpath('// div [@asin]/@asin')' – Phrogz 2011-04-08 17:10:12