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 に答える