기본적으로 나는 각 페이지에 복수 .main_entry
개의 블록을 갖게 될 것이고 각각에서 몇 가지 데이터를 가져와야 할 것입니다. 어떻게 이것이 메소드로 적절하게 리팩토링 될 수 있습니까?리팩토링 루비 스크래핑 코드
require 'open-uri'
require 'nokogiri'
url = #url
doc = Nokogiri::HTML(open(url))
doc.css(".main_entry").each do |item|
artist = item.at_css(".list_artist").text
title = item.at_css(".list_album").text
puts "#{artist} - #{title}"
end
내가 작성 오버되는 방법에 관련이있는 것으로 보인다 undefined local variable or method 'release'
오류가 발생합니다 아래의이 혼란에 도착했다. 아래 코드가 어떤 과정을 거쳐야하는지, 왜 고장이 났는지, 그리고 수정해야 할 부분을 설명해 주시겠습니까? 각 .main_entry
블록을 일종의 캐시 또는 배열에 먼저 저장해야합니까? 인스턴스화하기 전에? '그것을 대신
Scraper.new(url).releases.each do |release|
puts "#{release.artist} - #{release.title}"
end
'release.each'는 인스턴스 메소드'release'를 호출하지 않지만 :
그런 다음 당신이 할 수 있습니다 : 여기
– tadman@ tadman이 모양이 어땠 을까? 'def initialize (url, release) ... @release = Scraper.release' 그리고 나서 별도의'def release ... @release = ...'? – sivanes
당신이하고 싶은 것을 보여주는 샘플 HTML을 제공해야합니다. 우리가 그것을 발명하도록 만들지 마라. –