테이블에서 데이터를 긁어 내려고했는데 수집 한 데이터를 반복 할 수없는 이유를 알 수 없습니다. .루프에서 children.text를 호출 할 때 NoMethodError가 발생하지만 루프 외부에서 작동합니다.
테이블의 각 노드를 반복하면서 텍스트를 가져오고 싶지만 문은 내 루프 외부에 쓰여진 경우에만 작동합니다.
Take a look at the terminal I'm getting
는 루프의 puts
외부에서 잘 작동 것이 분명하지만, 같은 라인은 루프에 실패합니다. 내가
puts entry.children[1]
를 사용하는 경우 나는 루프에서 적절한 응답을 얻을 수 있지만,
children.text
를 추가하면 실패의 원인이 무엇이다 :
require 'HTTParty'
require 'Nokogiri'
require 'JSON'
require 'Pry'
require 'CSV'
module Guns
class Scraper
page = HTTParty.get('http://www.gunviolencearchive.org/last-72-hours')
parse_page = Nokogiri::HTML(page)
incidents = Array.new
raw_table = parse_page.css('#block-system-main').css('.sticky-enabled')
table_entries = raw_table.xpath('//tbody')[0].children
state = table_entries.children[1].children.text
puts table_entries.children[1].children.text
table_entries.each do |entry|
puts entry.children[1].children.text
end
Pry.start(binding)
end
end
나는의 클라이언트 측에서 문자열 슬라이스를 할 수있을 것 최종 프로그램은이 문제를 해결할 수 없지만 오히려해야 할 일은 아닙니다.
소문자로 사용하는 보석의 이름을 변환하는 것은 관용적입니다. 오류의 이미지를 보지 않고 오류의 필수/중요 부분을 텍스트로 복사하여 질문에 붙여 넣은 다음 적절히 형식을 지정해야합니다. 링크 썩어과 휴식과 그들이 당신의 질문을 할 때 많은 의미가되지 않습니다. "[mcve]"를 참조하십시오. 또한, 우리는 질문 자체에서 문제를 설명하는 페이지에서 추출한 절대 최소 HTML을 필요로합니다. –