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

歡迎訪問 生活随笔!

生活随笔

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

python

python获取百度迁徙大数据

發(fā)布時間:2023/12/10 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python获取百度迁徙大数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python獲取百度遷徙大數(shù)據(jù)


在疫情期間,百度遷徙大數(shù)據(jù)大放異彩,很多研究都是基于百度遷徙數(shù)據(jù)來進行的,由于本次研究也依賴與百度遷徙數(shù)據(jù),所以小試牛刀。

首先,打開目標網(wǎng)站 http://qianxi.baidu.com/,觀察網(wǎng)頁布局


其次,F12打開源網(wǎng)頁,Ctrl+R刷新,找到數(shù)據(jù)對應(yīng)item


接著,切換源網(wǎng)頁的header,找到請求url


然后,復制url到瀏覽器打開

發(fā)現(xiàn)兩者一毛一樣,接下來就是分析數(shù)據(jù)結(jié)構(gòu)和寫代碼提取數(shù)據(jù),先來一個按照省份級別遷入,并寫入到csv里面

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) # #發(fā)出請求并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_name

有進就有出,回擊原網(wǎng)頁點擊熱門遷出地,然后會發(fā)現(xiàn)源網(wǎng)頁多了一條item

獲取相應(yīng)的url,寫代碼如下獲取全國城市級別遷出數(shù)據(jù)

def 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) # #發(fā)出請求并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_name

代碼成功運行后,文件夾下會多出兩個csv文件,截圖如下


獲取兩個全國層面的數(shù)據(jù),你或許會有所感悟,那就是不同日期,不同城市,不同遷徙方向,不同層級(省份,城市)的請求都體現(xiàn)在url的參數(shù)里面

  • cityrank 表示城市級別
  • provincerank表示省份級別
  • id表示中華人民共和國縣以上行政區(qū)劃代碼,這個可以通過如下網(wǎng)站獲取 http://www.mca.gov.cn/article/sj/xzqh/2019/2019/201912251506.html
  • move_out表示遷出
  • move_in表示遷入
  • date表示日期
    下面給出如何循環(huán)構(gòu)造不同組合的url代碼
def generate_url(): #定義生成不同時期,不同城市,不同遷徙方向,不同層級的請求urldate_list=['20200129', '20200130', '20200131', '20200201', '20200202', '20200203','20200204', '20200205', '20200206', '20200207', '20200208', '20200209'] #初五到初十六時間段directions=['in', 'out'] #遷徙方向level_list=['province','city'] #數(shù)據(jù)級別city_list={'北京':'110000', '上海': '310000', '廣州':'440100', '深圳': '440300','杭州': '330100', '南京': '320100', '天津': '120000', '成都': '510100', '武漢': '420100', '蘇州': '320500'} #構(gòu)造重點10城字典urls=[] #用來存放urlfor city_id in list(city_list.values()): #城市idfor direction in directions: #遷入還是遷出for date in date_list: #對日期循環(huán)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 urls

最后貼出完整代碼

# -*- 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) # #發(fā)出請求并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) # #發(fā)出請求并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'] #數(shù)據(jù)級別city_list={'北京':'110000', '上海': '310000', '廣州':'440100', '深圳': '440300','杭州': '330100', '南京': '320100', '天津': '120000', '成都': '510100', '武漢': '420100', '蘇州': '320500'} #構(gòu)造重點10城字典urls=[] #用來存放urlfor city_id in list(city_list.values()): #城市idfor direction in directions: #遷入還是遷出for date in date_list: #對日期循環(huán)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爬蟲僅為學習交流,如有冒犯,請告知刪。

總結(jié)

以上是生活随笔為你收集整理的python获取百度迁徙大数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。