使用Nokogiri循环遍历结果页面

时间:2012-10-05 07:25:50

标签: nokogiri

我有一些代码可以在eBay上提取优惠,但有几个结果页面,我只得到第一页的结果。如何循环浏览多个结果页面?

这是我的代码:

    require 'rubygems'
    require 'nokogiri'
    require 'open-uri'

    url = "http://www.ebay.de/sch/i.html?_nkw=Suzuki+DR+BIG&_sacat=131090&_odkw=Suzuki+DR+BIG&_osacat=0&_from=R40"
    doc = Nokogiri::HTML(open(url))
    doc.css(".dtl").each do |dtl|

       puts dtl.at_css(".vip").text 
    end

1 个答案:

答案 0 :(得分:3)

您必须通过从“下一步”按钮(检查页面,位于css .botpg-next a)并加载它来链接每页的结果。

这样的事情:

url = "http://www.ebay.de/sch/i.html?_nkw=Suzuki+DR+BIG&_sacat=131090&_odkw=Suzuki+DR+BIG&_osacat=0&_from=R40"
while (url) do
  doc = Nokogiri::HTML(open(url))
  doc.css(".dtl").each do |dtl|
    puts dtl.at_css(".vip").text 
  end
  link = doc.css('.botpg-next a')
  url = link && link[0]['href'] #=> url is nil if no link is found on the page
end

我只是循环,直到找不到“下一个”按钮,但您可以更改它以将循环限制为给定数量的结果。