python爬取百度迁徙动态图_python爬虫动态爬取百度迁徙
#1.模擬瀏覽器發(fā)送請(qǐng)求
importrequestsimportjsonimportpandas as pd
city_name=[]
province_name=[]
value=[]
url= 'https://huiyan.baidu.com/migration/cityrank.jsonp?dt=country&id=0&type=move_in&date=20200315&callback=jsonp_1590404076900_7186798'rq=requests.get(url)
rq.status_code
html= rq.content.decode('utf-8')#2.從html中提取信息#字符串預(yù)處理
html1 = html[28:-1]
data= json.loads(html1)['data']['list']for i inrange(len(data)):
city_name.append(data[i]['city_name']) #賦值給一個(gè)列表
province_name.append(data[i]['province_name'])
value.append(data[i]['value'])#3.數(shù)據(jù)的本地存儲(chǔ)
move_in_data =pd.DataFrame({'遷入城市':city_name,'遷入省份':province_name,'比例':value
})
move_in_data.to_excel('./move_in_data.xlsx')
一、分析網(wǎng)站
首先我們來分析網(wǎng)站,動(dòng)態(tài)爬取與靜態(tài)爬取有些不同,尋找的數(shù)據(jù)就不在前端上面找了,而是在加載的文件中尋找
打開網(wǎng)頁F12,一般我們先看js文件,如果沒有,看看XHR等其他文件。按size排序,從大到小,查找數(shù)據(jù)
點(diǎn)擊Preview選項(xiàng),一個(gè)個(gè)查找,可以看到這里與前端顯示的數(shù)據(jù)是一樣的,接下來我們就要爬取這個(gè)數(shù)據(jù)
二、爬取數(shù)據(jù)
1、模擬瀏覽器發(fā)送數(shù)據(jù)
importrequests
url= 'https://huiyan.baidu.com/migration/cityrank.jsonp?dt=country&id=0&type=move_in&date=20200315&callback=jsonp_1590404076900_7186798'rq=requests.get(url)
rq.status_code
html= rq.content.decode('utf-8')
當(dāng)我們查看rq.status_code狀態(tài)碼時(shí),返回為200,則說明沒有設(shè)置反爬機(jī)制,不用設(shè)置header,若設(shè)置了反爬機(jī)制,狀態(tài)碼為418,就要像上一篇一樣,設(shè)置header
此刻查看html,已經(jīng)爬取下來了
2、提取html中數(shù)據(jù)
html1 = html[28:-1]
data= json.loads(html1)['data']['list']for i inrange(len(data)):
city_name.append(data[i]['city_name']) #賦值給一個(gè)列表,.append表示追加
province_name.append(data[i]['province_name'])
value.append(data[i]['value'])
我們想要的是data里面的數(shù)據(jù),那么首先就要截取字典,{}里面的東西
有一個(gè) 方法是直接截取
html1 = html[28:-2]
28是第28位,-2是倒數(shù)二位,意思就是只要從48位到-2位之間的內(nèi)容
輸出html1為(注意{}的首位閉合)
然后進(jìn)行解析
data = json.loads(html1)
json.load(filename)
json.loads(string)
一個(gè)從文件加載,一個(gè)從內(nèi)存加載
我們想要的是data里面的內(nèi)容,可以直接
data = json.loads(html1)['data']
讀取字典中第一個(gè)列表的字段
data['list'][0]['city_name']
3、將數(shù)據(jù)保存在本地
move_in_data =pd.DataFrame({'遷入城市':city_name,'遷入省份':province_name,'比例':value
})
move_in_data.to_excel('./move_in_data.xlsx')
總結(jié)
以上是生活随笔為你收集整理的python爬取百度迁徙动态图_python爬虫动态爬取百度迁徙的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基恩士上位机链路通讯_基恩士PLC通讯源
- 下一篇: 采用python解决实际问题_Pytho