Ruby / Rails - невозможно получить размер массива - PullRequest
0 голосов
/ 19 декабря 2011

Я использую следующий код для очистки списка eBay, используя gem scrAPI:

Я установил это, выполнив:

gem install scrapi

Я также переопределяю его текстовый парсер по умолчаниюобъявив:

Scraper::Base.parser :html_parser

Проблема в том, что я продолжаю получать следующую ошибку при размере массива auctions.Не уверен, что я делаю не так?И size, и length не работают.

Scraper.rb:31:in `<class:ScraperDemo>': undefined method `size' for nil:NilClass (No
MethodError)Scraper.rb:10:in `<main>'

Я просто запускаю из командной строки:

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

1 Ответ

0 голосов
/ 04 января 2012

Я выбрал Nokogiri в качестве своего скребка.

...