目錄
- 一、選擇資料源
- 三、整體代碼實作
- 4、總結
同時推薦前面作者另外兩個系列文章:
很多人學習python,不知道從何學起,
很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手,
很多已經做案例的人,卻不知道如何去學習更加高深的知識,
那么針對這三類人,我給大家提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的源代碼!
QQ群:961562169
- 快速入門之Tableau系列:快速入門之Tableau
- 快速入門之爬蟲系列:快速入門之爬蟲
一、選擇資料源
網址:https://wp.m.163.com/163/page/news/virus_report/index.html?nw=1&anw=1
好了知道上面的我們就可以準備開始了,
首先我們先匯入包和設定代理頭
import requests
import pandas as pd
import time
pd.set_option('max_rows',500)
headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'}
url = 'https://c.m.163.com/ug/api/wuhan/app/data/list-total' # 定義要訪問的地址
r = requests.get(url, headers=headers) # 使用requests發起請求
這個時候我們請求以下:
?
由上圖我們可以看到回傳后的內容是一個幾十萬長度的字串,由于字串格式不方便進行分析,并且在網頁預覽中發現資料為類似字典的json格式,所以我們將其轉為json格式,
import json
data_json = json.loads(r.text)
data_json.keys()

?
我們可以看出在data中存放著我們需要的資料,因此我們取出資料,
data = https://www.cnblogs.com/41280a/archive/2020/10/05/data_json['data']
data.keys()

?
資料中總共有四個鍵,每個鍵存盤著不同的內容:
接下來我們開始獲取實時資料,
三、整體代碼實作
# =============================================
# --*-- coding: utf-8 --*--
# @Time : 2020-03-27
# @Author : 不溫卜火
# @CSDN : https://blog.csdn.net/qq_16146103
# @FileName: Real-time epidemic.py
# @Software: PyCharm
# =============================================
import requests
import pandas as pd
import json
import time
pd.set_option('max_rows',500)
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'}
url = 'https://c.m.163.com/ug/api/wuhan/app/data/list-total' # 定義要訪問的地址
r = requests.get(url, headers=headers) # 使用requests發起請求
data_json = json.loads(r.text)
data = https://www.cnblogs.com/41280a/archive/2020/10/05/data_json['data']
data_province = data['areaTree'][2]['children']
areaTree = data['areaTree']
class spider_yiqing(object):
# 將提取資料的方法封裝成函式
def get_data(data, info_list):
info = pd.DataFrame(data)[info_list] # 主要資訊
today_data = https://www.cnblogs.com/41280a/archive/2020/10/05/pd.DataFrame([i['today'] for i in data]) # 提取today的資料
today_data.columns = ['today_' + i for i in today_data.columns]
total_data = https://www.cnblogs.com/41280a/archive/2020/10/05/pd.DataFrame([i['total'] for i in data])
total_data.columns = ['total_' + i for i in total_data.columns]
return pd.concat([info, total_data, today_data], axis=1)
def save_data(data,name):
file_name = name+'_'+time.strftime('%Y_%m_%d',time.localtime(time.time()))+'.csv'
data.to_csv(file_name,index=None,encoding='utf_8_sig')
print(file_name+'保存成功!')
if __name__ == '__main__':
today_province = get_data(data_province, ['id', 'lastUpdateTime', 'name'])
today_world = get_data(areaTree, ['id', 'lastUpdateTime', 'name'])
save_data(today_province, 'today_province')
save_data(today_world, 'today_world')
4、總結
此程式代碼有些許混亂,層次感不強,還有可能還有更高效的爬取手段,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157376.html
標籤:其他
