Ruby/Rails - 配列のサイズを取得できません

私はscrAPI gemを使ってeBayのリストを掻き集めるために次のコードを使用しています:

私はこれを実行してインストールしました:

gem install scrapi

また、デフォルトのテキストパーサーを次のように宣言してオーバーライドします。

Scraper::Base.parser :html_parser

問題は、オークション配列サイズで次のエラーが発生し続けることです。私は何が間違っているのか分からない? size length の両方が機能しません。

Scraper.rb:31:in `': undefined method `size' for nil:NilClass (No
MethodError)Scraper.rb:10:in `
'

私はコマンドラインから実行します:

ruby Scraper.rb

コード:

#!/usr/bin/env ruby

require 'open-uri'
require 'httparty'
require 'json'
require 'scrapi'

Scraper::Base.parser :html_parser

class ScraperDemo

    ebay_auction = Scraper.define do
        process "h3.ens>a", :description=>:text, :url=>"@href"
        process "td.ebcPr>span", :price=>:text
        process "div.ebPicture >a>img", :image=>"@src"

        result :description, :url, :price, :image
    end

    ebay = Scraper.define do
        array :auctions

        process "table.ebItemlist tr.single", :auctions=>ebay_auction

        result :auctions
    end

    auctions = ebay.scrape(URI.parse('http://search.ebay.com/ipod-nano_W0QQcatrefZC6QQfromZR3QQfsooZ1QQfsopZ1QQkeywordZonQQsacatZQ2d1QQstrkwZipod'))

    # No. of channels found
    puts auctions.size # error occurs on this line number

    # First auction:
    auction = auctions[0]
    puts auction.description
    puts auction.url

end
0
Fulvioは、NILが使用されている場合、これらのメソッドが定義されていないことを意味します。nilがあり、nilは、オークションクラスのインスタンスではありません。これはレールとルビーの初心者のための#1エラーです。あなたはもっとリサイズして経験を積むだけです(私のために働く)。
追加された 著者 Michael Durrant,
@ScottJShea未定義のメソッド 'count'、未定義のメソッド 'type'、auctions.class = NilClass
追加された 著者 fuzz,
エラーメッセージは、オークション nil であり、配列ではないことを示しています。問題は size ではありません。ところで、あなたのエラーメッセージには行番号が書かれているので、コードに行を付ける方が読みやすく、礼儀正しく、少なくともエラーメッセージがどの行に送られているかを教えてください。あなたのコードの中の行を数えさせるためにここにいる人々に頼んでいますか?
追加された 著者 sawa,
スクレイピーはもはや掻きするための一般的な選択肢ではありません。代わりにノコギリの使用を検討する必要があります。
追加された 著者 pguardiario,
@マーク機械化は、フォームやクッキーに対処する必要がある場合には素晴らしいツールですが、この場合は過度に使います。
追加された 著者 pguardiario,
@マーク - はい、ただし、open-uri(すでに彼が言及している)+ nokogiriと、1つのことが起こったときに2つのよく知られていない図書館を推薦することが賢明かどうかを考えてください。
追加された 著者 pguardiario,
@pguardiario ...またはMechanizeを使用するとブラウザのようなナビゲーションが可能になり、Nokogiriをシームレスに公開することができます。
追加された 著者 Mark Thomas,
@pguardiario Mechanizeには、クリック数やチェックボックスなどのリンクがない場合でもNet :: HTTP + Nokogiriよりも簡単なAPIが用意されています。それが必要。
追加された 著者 Mark Thomas,
オークションカウントは何かを返しますか?オークションのタイプやオークションのクラスは何を返すのですか?
追加された 著者 ScottJShea,

1 答え

私は選択のスクレイパーとしてノコギリを使用して終了しました。

0
追加された