【问题标题】:How can I get the numbers from the following website (using nokogiri)如何从以下网站获取号码(使用 nokogiri)
【发布时间】:2021-09-08 07:02:27
【问题描述】:

我的代码可以正常工作,但现在我可以从该网站获取除我需要的数字之外的任何信息。

代码是

require 'open-uri'
require 'nokogiri'
require 'curb'
require 'json'
require 'pp'
require 'openssl'

ejnumber4 = Nokogiri::HTML(open('https://www.sazka.cz/loterie/eurojackpot/sazky-a-vysledky'))
ejnumber4.css('.number-row').css('.numbers').text

我错过了什么?

谢谢。

【问题讨论】:

  • 您能否再解释一下您的问题,以便我们更好地理解它?您想具体获得哪些数字?
  • @AndréYuhai ,我试图得到彩票号码,即“1.OSUDÍ”,但每次我得到“”

标签: ruby web-scraping nokogiri


【解决方案1】:

网站从 2 次连续的 API 调用中获取数据。第一个是获取带有日期和抽奖 ID 的过去抽奖列表:

GET https://www.sazka.cz/api/draw-info/past-draws/eurojackpot

第二种是获取特定抽奖ID的抽奖结果:

GET https://www.sazka.cz/api/draw-info/draws/universal/eurojackpot/[DRAW_ID]

您可以使用 尝试以下 脚本以获得最后的抽奖结果:

#!/bin/bash

id=$(curl -s "https://www.sazka.cz/api/draw-info/past-draws/eurojackpot" | jq -r '.[0].id')

curl -s "https://www.sazka.cz/api/draw-info/draws/universal/eurojackpot/$id" | jq '.'

与 net/http 一起使用:

require 'net/http'
require 'json'

res = Net::HTTP.get(URI("https://www.sazka.cz/api/draw-info/past-draws/eurojackpot"))
id = JSON.parse(res)[0]["id"]

res = Net::HTTP.get(URI("https://www.sazka.cz/api/draw-info/draws/universal/eurojackpot/#{id}"))
p JSON.parse(res)

与 open-uri 一起使用:

require 'open-uri'
require 'json'

res = open("https://www.sazka.cz/api/draw-info/past-draws/eurojackpot").read
id = JSON.parse(res)[0]["id"]

res = open("https://www.sazka.cz/api/draw-info/draws/universal/eurojackpot/#{id}").read
p JSON.parse(res)

输出示例:

{ "drawId"=>2021255, "drawDate"=>"2021-06-25T19:00:00", "week"=>25, "year"=>2021, "draws"=>[[30, 4, 22, 47, 17], [1, 8]], "drawsExtra"=>nil, "addonDraw"=>[4, 0, 6, 9, 4, 3] .....
......

【讨论】:

  • 嗨@Bertrand Martel,非常感谢。它有很大帮助。我可以过滤掉我想要的细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多