0

我有一些代码可以在 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
4

1 回答 1

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

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

于 2012-10-05T08:29:31.907 回答