首页 > 解决方案 > 刮擦不返回预期值

问题描述

我正在使用 ruby​​ 脚本和 Nokogiri 来废弃网页。

在这段代码中,我想检索比赛时间:(这是一个 slakbot,它说比赛是否已经开始,实时比分是多少,它告诉比赛开始的时间)。

我废弃的网址:

doc = Nokogiri::HTML(open("https://fr.fifa.com/worldcup"))

我的方法:

match_times = doc.css('.fi-mu__m').map {|time| time.css('.fi-mu__score-info').css('.fi-mu__match-time').css('.fi-s__scoreText').map(&:text)}.flatten.map{|time| time.gsub( / *\n+/, "" ).gsub( / *\r+/, "" ).lstrip.rstrip }.map {|time| (Time.parse(time) - 3600).strftime("%H:%M")}

我的结果:

["14:00", "17:00", "19:00", "11:45", "11:45", "11:45", "11:45"]

我需要 3 个第一个结果…… “14:00”、“17:00”是对的,但“19:00”不好……应该是“20:00”

这是 DOM 显示的内容:

在我写这个问题时,第一场比赛已经开始,所以我现在不需要它......

对于第二场比赛:

<div class="fi-mu__match-time" data-timeutc="15:00" data-timeshiftutc="180" data-daymonthutc="2206" data-timelocal="18:00" data-mytime="17:00">
          <span class="fi-s__scoreText">17:00</span>
        </div>

第三场比赛:

<div class="fi-mu__match-time" data-timeutc="18:00" data-timeshiftutc="120" data-daymonthutc="2206" data-timelocal="20:00" data-mytime="20:00">
          <span class="fi-s__scoreText">20:00</span>
        </div>

我不知道出了什么问题...我需要获得data-mytime价值...

标签: htmlrubynokogiri

解决方案


推荐阅读