Problem z modelem do scrapowania HTML (Nokogiri)

Witam próbuje stworzyć klasę która będzie za pomocą nokogiri scrapować html i zapisywać ją w innym modelu
problem polega na tym że gdy w rails console próbuje wywołać metodę scrape_new_movie dostaje nil’a. Używam Rails 5.0.2.

2.3.0 :018 > s = Scrape.new
 => #<Scrape:0x007fba68b79e98>
2.3.0 :019 > s.scrape_new_movie
 => nil
2.3.0 :020 >

Poniżej klasa:

  class Scrape
  attr_accessor :title, :vote, :image_url, :description,

  def scrape_new_movie
    begin
      doc = Nokogiri::HTML(open("https://zalukaj.com/zalukaj-film/26280/barbie_w_wiecie_gier_barbie_video_game_hero_2017_.html").read, nil, 'utf-8')
      doc.css('script').remove
      self.title = doc.css('#pw_title.about_movie_title').text
      v = doc.css('#success_vote').text
      self.vote = v.slice(2...5)
      self.image_url = doc.css('.about_movie img').attr('src').text
      self.description = doc.css('#pw_description.e_s3k').text
      return true
      rescue Exception => e
      self.failure = "Something went wrong with the scrape"
    end
  end

  def save_movie
    movie = Movie.new(
      title: self.title,
      vote: self.vote,
      image_url: self.image_url,
      description: self.description
    )
    movie.save
  end
end

dodałeś na początku?

require 'nokogiri'
require 'open-uri'

mam dodane w config/initializers/nokogiri.rb:

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

binding.pry i debuguj.

usuń przecinek po :description

3 Likes

@patryk dzięki chodziło o przecinek

nie ma sprawy :wink: