【问题标题】:Extract specific keys from multiple JSONs by multiple URLs through API's通过 API 的多个 URL 从多个 JSON 中提取特定密钥
【发布时间】:2021-01-05 17:12:27
【问题描述】:

我正在通过彩票服务使用特定的 API 来提取结果。更具体地说,我想提取上个月每一天的第一次开奖的中奖号码。我使用的 API url 是 https://api.opap.gr/draws/v3.0/{gameId}/draw-date/{fromDate}/{toDate},它仅提取抽奖 ID 并提供放置特定日期范围的功能,但不幸的是,我收到以下错误。

{"code":26,"message":"Validation Error: toDate:NotExceedMaxRange,fromDate:NotExceedMaxRange","data":[{"type":"NotExceedMaxRange","property":"toDate","value":"2020-12-02","inputType":"path"},{"type":"NotExceedMaxRange","property":"fromDate","value":"2020-12-01","inputType":"path"}],"source":"infostore","type":"ValidationException","guid":"cda6908c-362d-4368-918e-1c64456bf5e1"}

当我在字段 {fromDate}/{toDate} 上放置相同的日期时,该错误停止出现。

所以我创建了以下代码,

import requests
import json
import datetime

start = datetime.datetime(2020, 12, 1)
end = datetime.datetime(2020, 12, 26)
delta = datetime.timedelta(days=1)

fmt = "https://api.opap.gr/draws/v3.0/1100/draw-date/{date1:%Y-%m-%d}/{date1:%Y-%m-%d}/draw-id"

urls=[]
while start < end:
    date1 = start
    date2 = start + delta
    url = fmt.format(date1=date1, date2=date2)
    start = date2

print(url)
r=requests.get(url)
html=r.text
draws=json.loads(html)
print(draws)

我正在获取我需要从中提取 JSON 文件的 url,但我遇到了很多错误,主要是因为(至少我认为)每个 JSON 中包含的数据是巨大的。

有什么方法可以从每个 JSON 中提取我想要的中奖号码密钥???

【问题讨论】:

  • 所以https://api.opap.gr/draws/v3.0/1100/draw-date/2020-12-25/2020-12-25/draw-id 只给出中奖抽奖,然后您想在主列表中找到这些抽奖?
  • 每天进行 180 次抽奖。该 url 仅提取特定日期的 drawid 编号。然后我必须从该列表中找到第一个 draw-id 并提取它的中奖号码。必须在每月的每一天执行 x30-31。

标签: python json python-3.x datetime


【解决方案1】:

这将为您提供给定日期的所有中奖号码(日期是一个字符串),不会让您一次查询超过一天:

import requests

def get_winning_numbers(date: str, game_id: str = '1100'):
    url = f'https://api.opap.gr/draws/v3.0/{game_id}/draw-date/{date}/{date}'
    data = requests.get(url).json()
    winning_numbers = [game['winningNumbers']['list']
                       for game in data['content']]
    return winning_numbers

print(get_winning_numbers('2020-12-01'))

输出:

[[49, 44, 55, 63, 79, 54, 19, 16, 59, 41, 4, 8, 23, 77, 36, 73, 35, 66, 3, 51],
 [3, 8, 24, 20, 4, 10, 33, 30, 65, 19, 68, 69, 17, 76, 39, 23, 27, 61, 49, 48],
 [66, 2, 50, 47, 24, 11, 25, 18, 80, 59, 22, 73, 48, 16, 65, 21, 5, 46, 67, 14],
 [32, 10, 8, 45, 69, 26, 72, 74, 13, 67, 79, 2, 25, 9, 58, 7, 20, 28, 66, 70],
 [46, 29, 41, 70, 72, 71, 34, 27, 38, 48, 68, 67, 31, 69, 74, 45, 11, 37, 75, 50],
 [28, 54, 69, 48, 79, 39, 60, 56, 9, 20, 11, 59, 4, 76, 61, 18, 78, 5, 64, 17],
 [7, 32, 31, 59, 68, 61, 20, 2, 15, 75, 23, 76, 74, 64, 37, 56, 41, 72, 65, 45],
 [23, 57, 4, 47, 51, 36, 16, 6, 17, 46, 29, 74, 35, 8, 15, 68, 33, 19, 40, 39],
 [14, 4, 23, 40, 36, 77, 31, 17, 5, 50, 35, 32, 39, 51, 38, 52, 26, 63, 30, 42],
 [25, 20, 66, 34, 22, 60, 43, 1, 40, 42, 31, 15, 4, 38, 26, 23, 75, 41, 44, 79]]

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2017-07-13
    • 2021-07-26
    相关资源
    最近更新 更多