python获取百度迁徙大数据
生活随笔
收集整理的這篇文章主要介紹了
python获取百度迁徙大数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python獲取百度遷徙大數據
在疫情期間,百度遷徙大數據大放異彩,很多研究都是基于百度遷徙數據來進行的,由于本次研究也依賴與百度遷徙數據,所以小試牛刀。
首先,打開目標網站 http://qianxi.baidu.com/,觀察網頁布局
其次,F12打開源網頁,Ctrl+R刷新,找到數據對應item
接著,切換源網頁的header,找到請求url
然后,復制url到瀏覽器打開
發現兩者一毛一樣,接下來就是分析數據結構和寫代碼提取數據,先來一個按照省份級別遷入,并寫入到csv里面
有進就有出,回擊原網頁點擊熱門遷出地,然后會發現源網頁多了一條item
獲取相應的url,寫代碼如下獲取全國城市級別遷出數據
代碼成功運行后,文件夾下會多出兩個csv文件,截圖如下
獲取兩個全國層面的數據,你或許會有所感悟,那就是不同日期,不同城市,不同遷徙方向,不同層級(省份,城市)的請求都體現在url的參數里面
- cityrank 表示城市級別
- provincerank表示省份級別
- id表示中華人民共和國縣以上行政區劃代碼,這個可以通過如下網站獲取 http://www.mca.gov.cn/article/sj/xzqh/2019/2019/201912251506.html
- move_out表示遷出
- move_in表示遷入
- date表示日期
下面給出如何循環構造不同組合的url代碼
最后貼出完整代碼
# -*- coding: utf-8 -*- """ Created on Tue Feb 18 14:25:58 2020 project name:百度遷徙 @author: 帥帥de三叔 """ import requests #導入請求模塊 import json #導入json模塊 import csv #導入csv模塊 import time #導入時間模塊def get_country_province(): #獲取全國省份級別流入url='http://huiyan.baidu.com/migration/provincerank.jsonp?dt=country&id=0&type=move_in&date=20200218'response=requests.get(url, timeout=10) # #發出請求并json化處理time.sleep(1) #掛起一秒r=response.text[3:-1] #去頭去尾data_dict=json.loads(r) #字典化if data_dict['errmsg']=='SUCCESS':data_list=data_dict['data']['list']with open("全國省份級別流入.csv", "w+", newline="") as csv_file:writer=csv.writer(csv_file)header=["province_name", "value"] #表頭"city_name",writer.writerow(header) #把表頭寫入for i in range(len(data_list)):province_name=data_list[i]['province_name'] #省份名value=data_list[i]['value']writer.writerow([ province_name, value]) #city_namedef get_country_city(): #獲取全國城市級別流出url='http://huiyan.baidu.com/migration/cityrank.jsonp?dt=country&id=0&type=move_out&date=20200218'response=requests.get(url, timeout=10) # #發出請求并json化處理time.sleep(1) #掛起一秒r=response.text[3:-1] #去頭去尾data_dict=json.loads(r) #字典化if data_dict['errmsg']=='SUCCESS':data_list=data_dict['data']['list']with open("全國城市級別流出.csv", "w+", newline="") as csv_file:writer=csv.writer(csv_file)header=["city_name", "province_name", "value"] #表頭city_namewriter.writerow(header) #把表頭寫入for i in range(len(data_list)):city_name=data_list[i]['city_name'] #城市名province_name=data_list[i]['province_name'] #省份名value=data_list[i]['value']writer.writerow([city_name, province_name, value]) #city_namedef generate_url(): #定義生成不同時期,不同城市,不同遷徙方向,不同層級的請求urldate_list=['20200129', '20200130', '20200131', '20200201', '20200202', '20200203','20200204', '20200205', '20200206', '20200207', '20200208', '20200209'] #初五到初十六時間段directions=['in', 'out'] #遷徙方向level_list=['province','city'] #數據級別city_list={'北京':'110000', '上海': '310000', '廣州':'440100', '深圳': '440300','杭州': '330100', '南京': '320100', '天津': '120000', '成都': '510100', '武漢': '420100', '蘇州': '320500'} #構造重點10城字典urls=[] #用來存放urlfor city_id in list(city_list.values()): #城市idfor direction in directions: #遷入還是遷出for date in date_list: #對日期循環for level in level_list: url='http://huiyan.baidu.com/migration/{}rank.jsonp?dt=country&id={}&type=move_{}&&date={}'.format(level, city_id, direction, date) #請求urlprint(url)urls.append(url) #追加進去return urlsif __name__=="__main__":get_country_province()get_country_city()generate_url()Python爬蟲僅為學習交流,如有冒犯,請告知刪。
總結
以上是生活随笔為你收集整理的python获取百度迁徙大数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php cve-2014-9427漏洞,
- 下一篇: java jsonobject_Java