我能夠使用Nokogiri刮http://www.example.com/view-books/0/new-releases,但我如何刮所有的頁面?這個有五頁,但不知道最後一頁如何進行?Nokogiri的數據刮取
這是我寫的程序:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'csv'
urls=Array['http://www.example.com/view-books/0/new-releases?layout=grid&_pop=flyout',
'http://www.example.com/view-books/1/bestsellers',
'http://www.example.com/books/pre-order?query=book&cid=1&layout=list&ref=4b116001-01a6-4f53-8da7-945b74fdb253'
]
@titles=Array.new
@prices=Array.new
@descriptions=Array.new
@page=Array.new
urls.each do |url|
doc=Nokogiri::HTML(open(url))
puts doc.at_css("title").text
doc.css('.fk-inf-scroll-item').each do |item|
@prices << item.at_css(".final-price").text
@titles << item.at_css(".fk-srch-title-text").text
@descriptions << item.at_css(".fk-item-specs-section").text
@page << item.at_css(".fk-inf-pageno").text rescue nil
end
([email protected] - 1).each do |index|
puts "title: #{@titles[index]}"
puts "price: #{@prices[index]}"
puts "description: #{@descriptions[index]}"
# puts "pageno. : #{@page[index]}"
puts ""
end
end
CSV.open("result.csv", "wb") do |row|
row << ["title", "price", "description","pageno"]
([email protected] - 1).each do |index|
row << [@titles[index], @prices[index], @descriptions[index],@page[index]]
end
end
正如你可以看到我已經硬編碼的URL。你如何建議我刮掉整個書籍類別?我正在嘗試海葵,但無法啓動它。
由於頁不充分y加載在html源代碼上,但當用戶瀏覽頁面時由某些js加載。您需要模擬用戶操作或執行js。這與nokogiri無關。也許'watir'寶石可以提供幫助。 – halfelf
好吧,我們會嘗試一下...... – Aayush
它總是有助於顯示您所寫的代碼,所以我們可以幫助您對其進行修改,而不是期望我們對您可能或不可能寫出的內容進行瘋狂猜測。 –