0

Nokogiri を使用して NBA リーグ テーブルの内容をコピーしようとしていますが、少し問題があります。

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "http://www.nba.com/standings/team_record_comparison/conferenceNew_Std_Cnf.html"
doc = Nokogiri::HTML(open(url))
doc.css(":contains('Western Conference')").count do |team|
  puts team .at_css("")
end

http://www.nba.com/standings/team_record_comparison/conferenceNew_Std_Cnf.htmlからテーブルを取得しようとしていますが、West Conference テーブルだけが必要ですが、取得できないようです。

4

3 に答える 3

1

東部と西部のカンファレンス チームが 1 つのテーブルにあるため、できることはすべての西部のカンファレンス チーム<tr>タグを取得することです。

doc.xpath("//table/tr[td//text()[contains(., 'Western Conference')]]/following-sibling::tr")
于 2013-10-16T13:06:59.820 に答える
0
require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "http://www.nba.com/standings/team_record_comparison/conferenceNew_Std_Cnf.html"
@doc = Nokogiri::HTML(open(url)) rescue nil
@doc.css('.confTitle').each do |team|
  if team.text == "Western Conference"
    # do your stuff
  end
end

CSSのテキストを確認して、そのデータを保存または印刷します/

于 2013-10-16T13:28:34.053 に答える
0

CSSアクセサーを使用してそれを行う方法は次のとおりです。

require 'nokogiri'
require 'open-uri'

url = "http://www.nba.com/standings/team_record_comparison/conferenceNew_Std_Cnf.html"
doc = Nokogiri::HTML(open(url))
table = doc.at('.genStatTable')

table現在、テーブルの上部を指しています。

rows = Nokogiri::XML::NodeSet.new(Nokogiri::HTML::Document.new)

rowsは NodeSet であり、目的の配列に似ています。

である 2 番目/最後のセルのテーブルを調べ、その親を取得しclassます。このレベルでノードが見つかるまでループします。confTitle<tr>

tr = table.css('.confTitle').last.parent
while tr do
  rows << tr
  tr = tr.next
end

puts rows.to_html

<tr>これは、次で始まるすべてのノードのリストを返します。

<tr>
<td colspan="11" class="confTitle">Western Conference</td>
         </tr>

そして次で終わる:

<tr class="odd">
<td class="team"><a href="/jazz">Utah</a></td>
            <td>1</td>
            <td>3</td>
            <td>0.250</td>
            <td>3.5</td>
            <td>1-3</td>
            <td>0-2</td>
            <td>1-2</td>
            <td>0-1</td>
            <td>1-3</td>
            <td>L 3</td>
         </tr>

テーブル内に埋め込むには、もう少し便利かもしれません:

require 'nokogiri'
require 'open-uri'

url = "http://www.nba.com/standings/team_record_comparison/conferenceNew_Std_Cnf.html"
doc = Nokogiri::HTML(open(url))

doc2 = Nokogiri::HTML('<html><body><table></table></body></html>')
doc2_table = doc2.at('table')

tr = doc.css('.genStatTable .confTitle').last.parent
while tr do
  doc2_table.add_child(tr.to_html) 
  tr = tr.next
end

puts doc2.to_html

これdoc2は、見つかったノードを保存/記憶できるスタブ HTML ドキュメントです。

于 2013-10-19T02:55:51.360 に答える