Python實現爬取全國疫情資料和地區疫情查詢

2021-10-02 16:03:09 字數 2783 閱讀 9584

乙個小小的爬蟲程式,練練手,沒什麼實際作用,希望疫情趕快過去。

1.獲取url

經過尋找,發現包含疫情資料的url為:

2.為了避免反爬,偽裝成瀏覽器:

headers =
3.最關鍵的一步,分析url,找到資料存放的規律

這些json資料看似雜亂無章,其實很好找到規律:

如下:

4.完成**:

import requests

import json

def down_data():

url = ''

headers =

r = requests.get(url, headers)

res = json.loads(r.text)

data_res = json.loads(res['data'])

return data_res

def parse_data1():

data = down_data()

'全國確診人數:'+str(data['chinatotal']['confirm'])+'\n'

'今日新增確診:'+str(data['chinaadd']['confirm'])+'\n'

'全國疑似:'+str(data['chinatotal']['suspect'])+'\n'

'今日新增疑似:'+str(data['chinaadd']['suspect'])+'\n'

'全國**:'+str(data['chinatotal']['heal'])+'\n'

'今日新增**:'+str(data['chinaadd']['heal'])+'\n'

'全國死亡:'+str(data['chinatotal']['dead'])+'\n'

'今日新增死亡:'+str(data['chinaadd']['dead'])+'\n']

result = ''.join(list)

with open('疫情查詢.txt', 'a+', encoding="utf-8") as f:

f.write(result + '\n')

def parse_data2():

data = down_data()['areatree'][0]['children']

path = str(input('請輸入你要查詢的省份:'))

for i in data:

if path in i['name']:

for item in i['children']:

list_city = [

'地區: '+str(item['name']) + '\n'

' 確診人數:' + str(item['total']['confirm']) ,

' 新增確診:' + str(item['today']['confirm']) ,

' **:' + str(item['total']['heal']) ,

' 新增**:' + str(item['today']['heal']) ,

' 死亡:' + str(item['total']['dead']) ,

' 新增死亡:' + str(item['today']['dead']) + '\n'

]res_city = ''.join(list_city)

with open('疫情查詢.txt', 'a+', encoding="utf-8") as f:

f.write(res_city)

down_data()

parse_data1()

parse_data2()

5.執行結果:

6.封裝成exe:

試執行:

Python爬取疫情資料

實現 輸出結果 import requests 請求庫 import pandas as pd 日期 today time.strftime y m d time.localtime format y 年 m 月 d 日 url 請求頭 headers 傳送請求 response requests....

搜狗 疫情資料爬取(Python)

上週已經分享過搜狗 疫情資料爬取 r語言 這次分享一下搜狗 疫情資料爬取 python from urllib import request from lxml import etree import re import pandas as pd import json url response r...

使用Python進行疫情資料爬取

為了使用python學習爬取疫情資料,提前學習了python中的語法和各種儲存結構 dirt 若沒有這些基礎很難看懂python 更別提寫了 放入要爬的url url 設定header做乙個防爬機制 獲取response的json response requests.get url,headers ...