2013-03-12 2 views
0

Nokogiri를 사용하여 웹 페이지에서 데이터를 가져오고 있는데 다음과 같은 데이터를 가져 와서 배열로 반환한다는 인상하에있었습니다. 대신 나는 몇 가지 문제를 일으키는 하나의 큰 문자열을 얻고 있습니다.Nokogiri가 배열로 데이터를 가져 오는 이유는 무엇입니까

home_team = doc.css(".team-home.teams") 

것은 내가 데이터를 문자열로 반환되는 것을 이해할 수

home_team = doc.css(".team-home.teams").text 

를 사용하는 것이 있다면. 이걸 잘못보고있는거야?

home_team = doc.css(".team-home.teams").map(&:text) 

을 시도했지만 그 문자열 aswell을 반환하는 것 같다? 콘솔에서 반환 된 배열을 얻는다면 어레이 형식으로 될 것입니다. 그렇습니까?

누군가가 자신의 콘솔

require 'open-uri' 
require 'nokogiri' 


FIXTURE_URL = "http://www.bbc.co.uk/sport/football/premier-league/fixtures" 

doc = Nokogiri::HTML(open(FIXTURE_URL)) 
home_team = doc.css(".team-home.teams").map(&:text) 
#home_team = doc.css(".team-home.teams") 
puts home_team 

이 시도하고 바로 출력이 두 경우 모두 무엇 둘 사이의 차이가있는 문자열인지 확인 수 있다면. 약간 미주리

감사

+0

을 대신 박았을하는, 풋 home_team.inspect.to_s –

+1

@PavelS 1) inspect' 항상 문자열'의 결과 일을하려고, 그래서에 to_s'는 superflous입니다'호출. 2)'puts'가 문자열이 아닌 인자를 넘겨 준다면 항상'to_s'를 호출하기 때문에 중복되지 않습니다 :) _ (And 3)'p foo'는'puts foo.inspect ',하지만 훨씬 적은 타이핑). _ – Phrogz

답변

1

데이터에 공백이 많이있다을 잃었다. 배열 할 때 :

home_team = doc.css(".team-home.teams").map {|team| team.text.strip} 
+0

빠른 질문, 배열에서 콘솔에서 반환되는 것을 어떻게 알 수 있습니까? 내가 볼 수있는 모든 것은 팀 이름의 목록입니다. 다른 방법과 비교하여 왼쪽에 정렬되어 있습니다. 시도 했음 – Richlewis

+1

.inspect를 끝에 추가하십시오 :'home_team = doc.css (". team-home.teams"). map {| team | team.text.strip} .inspect' 배열로 보았을 때 (또는'.class'를 사용합니다.) –

+0

아, 똑똑하고, 검사합니다 .... 내가 기억하고 있는지 확인하십시오. 감사합니다. – Richlewis

2

배열이 나타납니다. puts이 (가) to_s을 (를)하고있는 것입니다. 이 체크 아웃 :

require 'open-uri' 
require 'nokogiri' 

FIXTURE_URL = "http://www.bbc.co.uk/sport/football/premier-league/fixtures" 

doc = Nokogiri::HTML(open(FIXTURE_URL)) 
home_team = doc.css(".team-home.teams").map(&:text) 
# home_team = doc.css(".team-home.teams") 
puts home_team.class 
puts home_team.map(&:strip).inspect 

#=> Array 
#=> ["Everton", "Aston Villa", "Southampton", "Stoke", "Swansea", "Man Utd", "Sunderland", "Tottenham", "Chelsea", "Wigan", "Sunderland", "Arsenal", "Man City", "Swansea", "West Ham", "Wigan", "Everton", "Aston Villa", "Southampton", "Fulham", "Reading", "Chelsea", "Newcastle", "Norwich", "Stoke", "West Brom", "Liverpool", "Tottenham", "QPR", "Man Utd", "Newcastle", "Arsenal", "Aston Villa", "Everton", "Reading", "Southampton", "Stoke", "Chelsea", "Arsenal", "Fulham", "Norwich", "QPR", "Sunderland", "Swansea", "West Brom", "West Ham", "Tottenham", "Liverpool", "Man Utd", "Man City", "Aston Villa", "Chelsea", "Everton", "Southampton", "Stoke", "Wigan", "Newcastle", "Reading", "Arsenal", "Fulham", "Liverpool", "Man Utd", "Norwich", "QPR", "Sunderland", "Swansea", "Tottenham", "West Brom", "West Ham", "Arsenal", "Aston Villa", "Everton", "Fulham", "Man Utd", "Norwich", "QPR", "Reading", "Stoke", "Sunderland", "Chelsea", "Liverpool", "Man City", "Newcastle", "Southampton", "Swansea", "Tottenham", "West Brom", "West Ham", "Wigan"] 
관련 문제