Crawl the epidemic data and preview it with Markdown

I was not sleepy on Friday. I was bored and wrote a Python script. The function is very simple: get Sina's epidemic data about each country, write it into the md file and preview it, get the data regularly, and generate new markdown content when there is new data. .

1. Code

Since the function and code are very simple, go directly to the code

# -*-coding:utf8-*-
import re,requests,json,pprint,time
import os

pattern=re.compile(r'^try{sinajp_15844213244528328543098388435\((.*?)\);}catch\(e\){};')
lasttimes='00:00:00'

while True:
    res=requests.get('https://gwpre.sina.cn/ncp/foreign?_=1584421324452&callback=sinajp_15844213244528328543098388435')
    match=pattern.search(res.text)

    if match:
        obj=json.loads(match.group(1))
        resultObj=obj['result']
        times=resultObj['times']  # 截止时间
        timesMatch=re.search(r'截至(\d{2})月(\d{2})日(\d{2})时(\d{2})分',times)
        if timesMatch:
            times=timesMatch.group(1)+'月'+timesMatch.group(2)+'日 '+timesMatch.group(3)+':'+timesMatch.group(4)
        
        if times==lasttimes:
            continue
        else:
            lasttimes=times
            totalObj=resultObj['total']
            certain=totalObj['certain'] # 累计确诊
            die=totalObj['die']   # 死亡
            recure=totalObj['recure'] # 治愈
            certain_inc=totalObj['certain_inc'] # 确诊增加
            die_inc=totalObj['die_inc'] # 死亡增加
            recure_inc=totalObj['recure_inc'] # 治愈增加
            # 各国数据列表
            worldlistArr=resultObj['worldlist']
            worldlistArr.sort(key=lambda x: int(x.get('conNum','0')),reverse=True)
            
            fo=open('./coronavirus.md','a')
            fo.writelines('\n# '+times+'\n')
            fo.writelines('感染国家总数:'+str(len(worldlistArr))+'\n')
            fo.writelines('```\n累计确诊:'+certain.rjust(10,' ')+' 较昨日:'+certain_inc+'\n'+'累计死亡:'+die.rjust(10,' ')+' 较昨日:'+die_inc+'\n'+'累计治愈:'+recure.rjust(10,' ')+' 较昨日:'+recure_inc+'\n```\n')

            fo.writelines('|国家|新增确诊|累计确诊|新增死亡|累计死亡|累计治愈|'+'\n')
            fo.writelines('|:--:|---:|---:|---:|---:|---:|'+'\n')

            top15=worldlistArr[:15]
            pattient_countrys=['澳大利亚','加拿大','巴西','印度','丹麦','越南','新加坡','俄罗斯','塞尔维亚','巴基斯坦',]
            pattient=[c for c in worldlistArr if c['name'] in pattient_countrys]

            for countryObj in top15:
                name=countryObj['name'] # 国家
                if name=='中国':
                    continue
                conadd=countryObj['conadd'] # 新增确诊
                conNum=countryObj['conNum'] # 累计确诊
                deathadd=countryObj['deathadd'] # 新增死亡
                deathNum=countryObj['deathNum'] # 累计死亡
                cureNum=countryObj['cureNum'] # 累计治愈
                fo.writelines('|'+name+'|'+conadd+'|'+conNum+'|'+deathadd+'|'+deathNum+'|'+cureNum+'|\n')

            fo.writelines('\n特别关心'+'\n')
            fo.writelines('|国家|新增确诊|累计确诊|新增死亡|累计死亡|累计治愈|'+'\n')
            fo.writelines('|:--:|---:|---:|---:|---:|---:|'+'\n')
            for countryObj in pattient:
                name=countryObj['name'] # 国家
                conadd=countryObj['conadd'] # 新增确诊
                conNum=countryObj['conNum'] # 累计确诊
                deathadd=countryObj['deathadd'] # 新增死亡
                deathNum=countryObj['deathNum'] # 累计死亡
                cureNum=countryObj['cureNum'] # 累计治愈
                fo.writelines('|'+name+'|'+conadd+'|'+conNum+'|'+deathadd+'|'+deathNum+'|'+cureNum+'|\n')
            fo.close()
    
    # 用 Markdown IDE 打开 .md 文件进行预览
    os.system('open -a "/Applications/Typora.app" ./coronavirus.md')

    for i in range(1,61):
        time.sleep(10)
        print(i*10)2

2. How to use

  1. install requests
pip3 install requests
  1. Modify the way Markdown is opened. Since the Marodown editor is installed on my computer Typora, so the script is open -a "/Applications/Typora.app" ./coronavirus.md. Modify here ***.appfor your own ide

  2. Terminal can run

python3 coronavirus.py

renderings

{{o.name}}
{{m.name}}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=324128462&siteId=291194637