judgecx 发表于 2022-2-23 11:09

[Python] 疫情等级查询

论坛那位老哥写的太高级了 有点看不懂 就写了一个简易的 我也不知道这个接口是一直更新还是咋样 过些天要是不更新我再来改import requests
import json

url = 'https://file1.dxycdn.com/2021/0202/196/1680100273140422643-135.json'
r = requests.get(url)
res = r.json()
for cards in res["data"]:
    if cards['dangerLevel'] == 1:
      print(str(cards['dangerCount'])+'个高风险地区')
    if cards['dangerLevel'] == 2:
      print(str(cards['dangerCount'])+'个中风险地区')
    for i in cards['dangerPros']:
      for idangerAreas in i['dangerAreas']:
            print(i['provinceName']+idangerAreas['cityName']+idangerAreas['areaName'])

cflying 发表于 2022-2-23 21:15

本帖最后由 cflying 于 2022-3-21 22:08 编辑

卫建委的查询有啥难的,一共两个点:
1、www.gov.cn/yqfxdjcx/index.html这个页面中,
appId: "NcApplication"
area_code: "130102"(这个一眼就懂了,不用解释)
key: "2CA32596474B4077834CCC191D351839"(开头以为是动态生成,结果仔细一眼,api的js里固定的,自己声明一哈就行)
nonceHeader: "123456789abcdefg"(也是固定的)
paasHeader: "zdww"(也是固定的)
signatureHeader: "2552BBC6B8110C2D3E62E2CDCFE6FFA1FE2B067BFF08CC48E095E97F534E595A"(这里看起来最复杂,其实就是:时间戳+token(这个是固定)+nonce(也是固定)+时间戳,然后sha256一下,然后大写)
timestampHeader: "1645621507"(这个时间戳不用解释)

以上token,nonce内容www.gov.cn/yqfxdjcx/source/PC/js/risk.里就有
function s(t) {
            var e = ((new Date).getTime() / 1e3).toFixed()
            , a = "23y0ufFl5YxIyGrI8hWRUZmKkvtSjLQA"
            , i = "123456789abcdefg"
            , s = "zdww";
            return JSON.stringify(Object.assign({
                appId: "NcApplication",
                paasHeader: s,
                timestampHeader: e,
                nonceHeader: i,
                signatureHeader: CryptoJS.SHA256(e + a + i + e).toString(CryptoJS.enc.Hex).toUpperCase()
            }, t))
      }
对了,应该请求头里还有个这个(我没试,看代码的时候看到了,估计应该也是必要条件)
headers: {
          'x-wif-nonce': 'QkjjtiLM2dCratiA',
          'x-wif-paasid': 'smt-application',
          'x-wif-signature': zdwwsignature,
          'x-wif-timestamp': timestamp
      }
zdwwsignature这个很容易理解时间+ 'fTN2pfuisxTavbTuYVSsNJHetwq5bJvC' + 'QkjjtiLM2dCratiA' + 时间,然后she256一下大写
    .toString(CryptoJS.enc.Hex)
timestamp就是时间
x-wif-signature:x-wif-signature:
2、www.gov.cn/yqfxdjcx/risk.html这个页面同上
唯一区别就是没有area_code,key和上面的不一样,但也是固定的
在www.gov.cn/yqfxdjcx/source/PC/js/risk里
return $(".loading").show(),
                                    e.next = 3,
                                    Ajax({
                                        key: "3C502C97ABDA40D0A60FBEE50FAAD1DA"
                                    });

吾更爱你 发表于 2022-3-15 08:16

judgecx 发表于 2022-2-27 14:59
写这些无非就是练手,或者别人对接自己网站或者是公众号,我就是对接自己公众号的

请教下 怎么对接自己公众号呢 需要有服务器么

netpeng 发表于 2022-2-23 11:22

学习下,感谢分享。

itisif 发表于 2022-2-23 11:24

这个学习一下

夏驰 发表于 2022-2-23 13:03

感谢分享

云在天 发表于 2022-2-23 13:34

这是丁香医生的接口,这个和国家卫健委的更新速度上可能不一致

judgecx 发表于 2022-2-23 13:55

云在天 发表于 2022-2-23 13:34
这是丁香医生的接口,这个和国家卫健委的更新速度上可能不一致

m没办法 国家卫健 加密啥的 凑合用了

zxl1993 发表于 2022-2-23 13:59

或许这就是大佬吧

清淡如风 发表于 2022-2-23 16:20

学习一下,感谢发布。

Calvin 发表于 2022-2-23 16:28

支持一下~
大佬啊

Agustin 发表于 2022-2-23 16:33

本帖最后由 Agustin 于 2022-2-23 16:34 编辑

不错不错,适合初学者学习
页: [1] 2 3 4 5
查看完整版本: [Python] 疫情等级查询