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

歡迎訪問 生活随笔!

生活随笔

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

python

Python爬虫实战之 爬取全国理工类大学数量+数据可视化

發布時間:2024/1/1 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫实战之 爬取全国理工类大学数量+数据可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上次爬取高考分數線這部分收了個尾,今天咱們來全面爬取全國各省有多少所理工類大學,并簡單實現一個數據可視化。話不多說,咱們開始吧。

第一步,拿到url地址
第二步,獲取高校數據
第三步,地圖可視化
第四步,調用函數實現需求

第一步,拿到url地址

這一部分需要導入這些庫

import requests

首先,拿到初始的url地址:

url_start='https://gkcx.eol.cn/school/search?recomschprop=%E7%90%86%E5%B7%A5'

將“理工”進行轉碼處理,就變成了url后面那樣。

進入后頁面如下:

可以看到,共匹配到866所學校,共有44頁。感覺能繼續往下爬了嗎?別急,接著往下看。

我們先進行常規的get請求,發現得不到網頁信息。同時發現,這些高校數據并不在網頁源代碼中,怎么辦呢?

如果數據不在當前的url當中要通過抓包工具network來分析數據,再通過search來查詢我們需要的數據

我們先搜索關鍵字“重慶工程學院”,可以看到response獲取信息成功切換到Headers處,能夠確定請求的方法為post請求,得到數據請求的真正url地址


這就是真正的url地址

url='https://api.eol.cn/gkcx/api/?access_token=&admissions=&central=&department=&dual_class=&f211=&f985=&is_dual_class=&keyword=&page=1&province_id=&request_type=1&school_type=&signsafe=&size=20&sort=view_total&type=5001&uri=apigkcx/api/school/hotlists'

其中page參數代表頁數,可以看到,page=1,以第1頁為例開始爬。通過遍歷即可獲取所有數據。其中post方式需提交一個data表單

這一部分代碼如下

# 獲取44頁的url i = 1 j = 0 links = [] while i <= 44:link = 'https://api.eol.cn/gkcx/api/?access_token=&admissions=&central=&department=&dual_class=&f211=&f985=&i s_dual_class=&keyword=&page={}&province_id=&request_type=1&school_type=&signsafe=&size=20&sort=view_ total&type=5001&uri=apigkcx/api/school/hotlists'.format(i)links = links + [link]i += 1

獲取到的url列表如下,共有44條:

之后的代碼如下:

# 將之前列表中的url傳過來 def geturl(url):header={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36','Referer': 'http://gaokao.eol.cn/' }data = { 'access_token':'', 'admissions':'', 'central':'', 'department':'', 'dual_class':'', 'f211':'', 'f985':'', 'is_dual_class':'', 'keyword':'', 'page': '1', 'province_id':'', 'request_type': '1', 'school_type':'', 'signsafe':'', 'size': '20', 'sort': 'view_total', 'type': '5001', 'uri': 'apigkcx/api/school/hotlists' }response=requests.post(url,headers=header,data=data)response.encoding = 'utf-8'xinxi = response.textreturn xinxi

第二步,獲取高校數據

這一部分需要導入這些庫

import json from collections import Counter # 尋找重復值

運行以上代碼,可以發現所有數據存放在一個字典中

現在我們需要做的,就是把高校名稱、城市字段提取出來。這一頁所有信息都存放在名為data的字典中,現在把字典拿出來。

由于數據是屬于json類型,所以要進行相應的轉換(轉化成python數據要用json.loads()命令),以便提取數據。

提取數據

def getdata(xinxi):shuju = json.loads(xinxi)['data']['item']

可以發現,現在的數據存放到了一個列表中,咱們繼續提取。

# 大學名稱college = [i.get('name') for i in shuju]# 所在省份province = [i.get('province_name') for i in shuju]# 所在城市city = [i.get('city_name') for i in shuju]

現在要找到各省份的理工類高校數量

# 尋找同一省份的學校個數a = dict(Counter(province))# 尋找重復項目和重復個數b = {key:value for key,value in a.items() if value >= 1}return b

第三步,地圖可視化

上面我們得到了省份及理工類大學數量,現在需要把分布地圖繪制出來。需要注意的是,要把pyecharts版本切換為1.6.2
這一部分需要導入這些庫

from pyecharts import options as opts from pyecharts.charts import Map

具體代碼如下:

def painting(b):xuexiao = list(zip(b.keys(),b.values()))c = (Map(init_opts=opts.InitOpts(width="1000px", height="600px")) #可切換主題.set_global_opts(title_opts=opts.TitleOpts(title="各省理工類高校分布圖 單位:個"),visualmap_opts=opts.VisualMapOpts(min_=0,max_=100,range_text = ['理工類高校數量區間:', ''], #分區間is_piecewise=True, #定義圖例為分段型,默認為連續的圖例pos_top= "middle", #分段位置pos_left="left",orient="vertical",split_number=10 #分成10個區間)).add("高校數量",xuexiao,maptype="china").render("理工類高校分布圖.html") )return c

第四步,調用函數實現需求

前面三步中,咱們通過函數來實現了爬取數據和地圖可視化的功能。現在需要在最后加上一個main方法來調用前面的函數,從而實現最終需求。

if __name__ == '__main__':# 1.獲取每一個列表頁url及源碼數據xinxi = [geturl(links[i]) for i in range(44)]# 2.獲取每一頁的學校數據b = [getdata(xinxi[i]) for i in range(44)]print(b)# 3.進行數據整理(將每一頁的數據匯總)i = 0while i <= 42:for k,v in b[i].items():if k in b[i+1].keys():b[i+1][k] += velse:b[i+1][k] = vi += 1# print(b[43])c = b[43] # 將匯總結果賦值給c# 4.繪出地圖xuexiao = list(zip(c.keys(),c.values()))# print(xuexiao)map = painting(c)

其中,第2步的結果如下,此時各省份數量還未匯總:

第3步的結果如下,此時各省份數量已經匯總完畢:

第4步的結果如下,此時是打包好的將要用于繪圖的數據

運行整個程序后,得到了這樣一幅地圖,咱們實現了地圖可視化:

至此,咱們已經統計出全國的理工類大學在各省份的數量分布,實現了爬蟲和數據可視化的完美結合。
?
?
?
第一篇:Python的要點(搭建環境、安裝配置、第三方庫導入方法詳細過程)
第二篇:Python爬蟲初探(一)——了解爬蟲
第三篇:Python爬蟲初探(二)——爬蟲的請求模塊
第四篇:Python爬蟲初探(三)——爬蟲之正則表達式介紹
第五篇:Python爬蟲初探(四)——爬蟲之正則表達式實戰(爬取圖片)
第六篇:Python爬蟲初探(五)——爬蟲之xpath與lxml庫的使用
第七篇:Python爬蟲初探(六)——爬蟲之xpath實戰(爬取高考分數線信息)
第八篇:Python爬蟲初探(七)——爬蟲之Beautifulsoup4介紹(Ⅰ)
第九篇:Python爬蟲初探(八)——爬蟲之Beautifulsoup4介紹(Ⅱ)
第十篇:Python爬蟲初探(九)——爬蟲之Beautifulsoup4實戰(爬取豆瓣信息)

總結

以上是生活随笔為你收集整理的Python爬虫实战之 爬取全国理工类大学数量+数据可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。