我正在尝试使用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获取表格 只想要西会议桌,但似乎无法得到它。
答案 0 :(得分:1)
由于东西方会议团队在一个表格中,您可以做的最好的事情是获得所有西方会议团队<tr>
标签。
doc.xpath("//table/tr[td//text()[contains(., 'Western Conference')]]/following-sibling::tr")
答案 1 :(得分: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的文本,然后保存或打印该数据/
答案 2 :(得分: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,它与我们的目的类似。
查看表格中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文档,其中找到的节点可以存储/记住。