日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

發布時間:2025/4/16 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python 爬蟲篇 - 爬取全國新冠肺炎疫情數據實例詳解

  • 效果圖展示
  • 第一章:疫情信息的下載與數據提取
  • ① 爬取頁面數據到本地
  • ② json 字符串正則表達式分析
  • ③ 提取數據中的 json 字符串
  • 第二章:疫情信息數據分析
  • ① 提取 json 字符串里的省份疫情數據并顯示
  • ② 顯示查詢省份的城市疫情數據

[ 系列文章篇 ]
Python 地圖篇 - 使用 pyecharts 繪制世界地圖、中國地圖、省級地圖、市級地圖實例詳解

[ 專欄推薦 ]
Python 短視頻自動化發布,包含抖音、快手、bilibili、小紅書、微視、好看視頻、西瓜視頻、微信視頻號等 10 余種平臺

效果圖展示

這是省份的:

這是城市的:

第一章:疫情信息的下載與數據提取

① 爬取頁面數據到本地


通過 BeautifulSoup 庫解析代碼,將疫情信息內容下載到本地 txt 文件用于數據分析使用。

from urllib.request import urlopen from bs4 import BeautifulSoupdef dxy_data_down(article_url):"""xiaolanzao, 2022.02.27【作用】下載疫情數據信息【參數】article_url : 需要下載數據的地址【返回】無"""url = urlopen(article_url)soup = BeautifulSoup(url, 'html.parser') # parser解析f = open("疫情數據.txt","w",encoding="utf-8")f.write(str(soup))f.close()dxy_data_down("https://ncov.dxy.cn/ncovh5/view/pneumonia")

下載后的數據

② json 字符串正則表達式分析

通過分析文件查找到
需要數據的 json 字符串前關鍵詞 "try { window.getAreaStat = "

json 字符串后關鍵詞 }catch(e){}

(.*?) 是匹配所有內容。
整合的正則表達式為如下:

# json字符串前后關鍵詞 json_start = "try { window.getAreaStat = " # 字符串包含的括號要進行轉義 json_end = "}catch\(e\){}"# json字符串正則匹配 # (.*?)是匹配所有內容 regular_key = json_start + "(.*?)" + json_end

③ 提取數據中的 json 字符串

讀取本地文件,提取里面的 json 字符串數據。

import redef get_json():"""xiaolanzao, 2022.02.27【作用】讀取本地文件,獲取json信息【參數】無【返回】json字符串"""# 讀取本地文件f = open("疫情數據.txt", "r", encoding="utf-8")f_content = f.read()f.close()# json字符串前后關鍵詞json_start = "try { window.getAreaStat = "# 字符串包含的括號要進行轉義json_end = "}catch\(e\){}"# json字符串正則匹配# (.*?)是匹配所有內容regular_key = json_start + "(.*?)" + json_end# 參數rs.S可以無視換行符,將所有文本視作一個整體進行匹配re_content = re.search(regular_key, f_content, re.S)# group()用于獲取正則匹配后的字符串content = re_content.group()# 去除json字符串的前后關鍵詞content = content.replace(json_start, '')# 尾巴要去掉轉義符號json_end = "}catch(e){}"content = content.replace(json_end, '')print(content)return contentjson_content = get_json()

讀取后的內容:

第二章:疫情信息數據分析

① 提取 json 字符串里的省份疫情數據并顯示

方法里所傳入的數據是上面返回的 json 字符串。

import jsondef display_provinces(json_content):"""xiaolanzao, 2022.02.27【作用】展示省份疫情【參數】json_content : json字符串【返回】無"""# 將字符串轉化為字典json_data = json.loads(json_content)# 省份數據展示print("全國各省份疫情數據如下:")for i in json_data:print("【省份名】:" + i["provinceName"])print("現存確診:" + str(i["currentConfirmedCount"]))print("累計確診:" + str(i["confirmedCount"]))print("死亡:" + str(i["deadCount"]))print("治愈:" + str(i["curedCount"]))print()display_provinces(json_content)

運行效果圖:

可以對比下數據是一致的

② 顯示查詢省份的城市疫情數據

城市數據在省份數據的 cities 里面。

import jsondef display_citys(json_content, province_name):"""xiaolanzao, 2022.02.27【作用】展示城市疫情【參數】json_content : json字符串province_name : 需要查詢的省份名【返回】無"""# 將字符串轉化為字典json_data = json.loads(json_content)# 省份數據展示print(province_name + "疫情數據如下:")for i in json_data:# print(i)if(i["provinceName"] == province_name):# 讀取里面的城市信息try:citys = i["cities"]for ii in citys:print("【城市名】:" + ii["cityName"])print("現存確診:" + str(ii["currentConfirmedCount"]))print("累計確診:" + str(ii["confirmedCount"]))print("死亡:" + str(ii["deadCount"]))print("治愈:" + str(ii["curedCount"]))print()except Exception as e:print(e)print("沒有相應的城市信息!")display_citys(json_content, "河北省")

運行效果圖:

可以對比下數據是一致的

喜歡的點個贊?吧!

總結

以上是生活随笔為你收集整理的每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。