0

Nokogiri を使用して Web ページからデータを取得していますが、次のようにデータを取得して配列として返すという印象を受けましたか? 代わりに、いくつかの問題を引き起こしている 1 つの大きな文字列を取得しています。

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

もし私が使うなら

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

文字列として返されるデータを理解できました。私はこれを間違った方法で見ていますか?

私も試してみました

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

しかし、それも文字列を返しているようですか?コンソールに返された配列を取得していた場合、それは配列形式になりますか?

誰かがコンソールでこれを試すことができれば

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

どちらの場合も出力が文字列であることと、両者の違いを確認するだけです。途中で少し迷った

ありがとう

4

2 に答える 2

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"]
于 2013-03-12T13:58:46.350 に答える
1

データには多くの空白があります。これを行うと、配列を取得します。

home_team = doc.css(".team-home.teams").map {|team| team.text.strip}
于 2013-03-12T13:54:26.360 に答える