html - 刮擦不返回预期值
问题描述
我正在使用 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
价值...
解决方案
推荐阅读
- swift - “调用实例方法‘预测’没有完全匹配”Swift Core/CreateML 错误
- angular - 如何确保侧边栏填满页面(Angular + ng-bootstrap + angular material)
- azure-devops - 本地 Azure DevOps 服务器:不允许创建任务或将任务移动给贡献者
- javascript - main.js:95 WebSocket 连接到 'wss://website' 失败:(
- legend - 如何防止绘图图例的宽度限制图表数据的可用空间?
- c# - 将带有图像的列表导出到 Excel
- python - 如何解决浮点计算问题?
- javascript - 如何使用 child_process 从节点内运行 diskpart 命令?
- python - Pandas - 在 groupby 语句之后为均值和标准添加列
- html - 如何在纸上以多列呈现 HTML 表格?