그래서 저는 총기 사고 / 사망 데이터가있는 웹 사이트에서 데이터를 긁어내는 프로젝트를 진행하고 있습니다. 웹 사이트는 다음과 같습니다. http://www.gunviolencearchive.org/officer-involved-shootings
나는 각 테이블 행을 잡고 해당 행의 데이터로 객체 (인스턴스?, 루비를 처음 사용)를 만들고 콘솔에 출력하려고합니다. 현재 @occurances 배열은 동일한 데이터의 배열을 26 번 반환합니다. 분명히 첫 번째 행으로 덮어 씁니다. 이러한 각 인스턴스를 어떻게 저장하도록 제안 하시겠습니까?
내 코드는 다음과 같습니다. (선택)은 웹 사이트 주소입니다.
def self.data_from_choice(choice)
doc = Nokogiri::HTML(open(choice))
@occurances = []
doc.xpath("//tr").each do |x|
date = doc.css("td")[0].text
state = doc.css("td")[1].text
city = doc.css("td")[2].text
deaths = doc.css("td")[4].text
injured = doc.css("td")[5].text
source = doc.search(".links li.last a").attr("href").value
@occurances << {:date => date, :state => state, :city => city, :deaths => deaths, :injured => injured, :source => source}
end
puts @occurances
end
각 행의 루프에서 doc.css(...)
. 이렇게하면 매번 문서의 맨 위에서 (예 :에서 doc
) 검색이 수행됩니다. 내가 원하는 것은 x
변수 에있는 행을 기준으로 검색하는 것 입니다.
따라서 이것을 변경하십시오.
date = doc.css("td")[0].text
이에
date = x.css("td")[0].text
유사위한 state
, city
등
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다