最近写数学建模,一直找不到历史的数据,让我很苦恼。只能靠自己了
然后我去学习了几天python pacho,终于可以看懂代码了,随意爬取任意国家,地区的新冠历史数据了,下面来说一下吧
一、分析数据接口
1.进入海外疫情主页,分析海外各国疫情历史数据接口:
进去按F12,出现以上画面,再按CTRL+R进行加载,一段时间后点击红色的按钮暂停。
找到存放你想要的数据的地方
接下来就是伪装是浏览器打开的了,不然就会被识别是python 把内容放到header={}中以字典的形式
中国历史疫情数据
class Scraper():
def __init__(self):
self.apiUrl = "https://2019ncov.chinacdc.cn/JKZX/gb_yq_{}.json"
self.header = {'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'close'
}
self.proxies = { "http": None, "https": None}
def download(self,startDate, endDate):
date = datetime.strptime(startDate, "%Y%m%d")
end = datetime.strptime(endDate, "%Y%m%d")
j = 0
Data = []
while date <= end:
currentDate = date.strftime('%Y%m%d')
print(currentDate)
date = date + timedelta(days=1)
url = self.apiUrl.format(currentDate)
response = requests.get(url,headers = self.header)
city_list = json.loads(response.text)
data = []
df = city_list['features'][1]['properties']
data.append(df)
df[j] = pd.DataFrame(data)
df[j].drop(['OBJECTID','globe_OBJECTID','name_cn','globe_中文名','globe_Shape_Leng','Shape_Length','Shape_Area'],axis=1,inplace=True)
Data = pd.DataFrame(Data)
Data = pd.concat([Data, df[j]], axis=0)
j += 1
Data.to_csv('Data.csv',encoding='utf-8-sig')
if __name__ == "__main__":
spider = Scraper()
spider.download('20220401', '20220506')#改自己想要的历史数据
同理,可以爬取任何地方的历史数据。
因为有很多内容平台不能说 ,所以无法分享。
有不懂的地方可以联系我,或要数据的私信我吧!