仍在学习如何使用 nokogiri,到目前为止可以通过 css 元素抓取。有一个页面我想抓取http://www.bbc.co.uk/sport/football/results,我想获得所有结果巴克莱超级联赛,可以通过阿贾克斯的电话进行渲染,但是我读过的 nokogiri 是不可能的。
所以我提供的链接对所有不同的联赛都有很多结果,所以我只能抓住那些标题为巴克莱超级联赛的结果,它包含在
class="competition-title"
到目前为止,我可以像这样获取所有结果
def get_results # Get me all results
doc = Nokogiri::HTML(open(RESULTS_URL))
days = doc.css('#results-data h2').each do |h2_tag|
date = Date.parse(h2_tag.text.strip).to_date
matches = h2_tag.xpath('following-sibling::*[1]').css('tr.report')
matches.each do |match|
home_team = match.css('.team-home').text.strip
away_team = match.css('.team-away').text.strip
score = match.css('.score').text.strip
Result.create!(home_team: home_team, away_team: away_team, score: score, fixture_date: date)
end
任何帮助表示赞赏
编辑
好的,好像我可以使用一些红宝石,使用选择?不知道如何实施。下面的例子
.select{|th|th.text =~ /Barclays Premier League/}
或者更多的阅读说可以使用 xpath
matches = h2_tag.xpath('//th[contains(text(), "Barclays Premier League")]').css('tr.report')
或者
matches = h2_tag.xpath('//b/a[contains(text(),"Barclays")]/../following-sibling::*[1]').css('tr.report')
已经尝试过 xpath 的方式,但显然是错误的,因为没有任何节省
谢谢