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

歡迎訪問 生活随笔!

生活随笔

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

python

python爬虫分析大学排名_Python爬虫获得国内高校排名,python,获取,大学排名

發布時間:2025/4/5 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫分析大学排名_Python爬虫获得国内高校排名,python,获取,大学排名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

整體思路

首先需要找到一個可以看排名的網站,同時他允許我們爬取信息。https://www.shanghairanking.cn/rankings/bcur/2020

然后獲取到網站信息,對信息提取處理后呈現出來。

獲取網站信息需要用到requests庫,處理信息用到bs4庫。

獲取網站信息

requests庫作為python的第三方庫,用以從網頁上獲取信息。使用前需要先下載,輪到pip出場了!

pip install requests

requests庫提供了get方法像服務器請求資源。get方法第一個參數url傳入我們想要獲取信息的網址,params為鏈接中額外的參數。第三個參數為一些控制訪問的參數。

requests.get(url, params=None, **kwargs)

例如,如果您想將key1=value1和傳遞 key2=value2給httpbin.org/get,則可以使用以下代碼:

>>> payload = {'key1': 'value1', 'key2': 'value2'}

>>> r = requests.get('https://httpbin.org/get', params=payload)

>>>> print(r.url)

https://httpbin.org/get?key2=value2&key1=value1

這里我們把網址直接傳進去就行。

import requests

url='https://www.shanghairanking.cn/rankings/bcur/2020'

r=requests.get(url,timeout=30)#設置超時時間30s

r.raise_for_status()#返回響應碼不是200就報異常

r.encoding=r.apparent_encoding#設置響應文本編碼為實際編碼

html=r.text #將返回的信息放在變量里

處理獲取到的信息

這里需要用到Beautiful Soup庫,也叫beautifulsoup4 或bs4,使用pip下載bs4庫。

bs4庫提供了html解析器,通過對html標簽樹的遍歷,我們可以得到我們想要的某個標簽下的信息。

標簽樹

html是以<>…>構成所屬關系,形成了標簽的樹形結構。標簽下套著標簽,根據標簽的所屬關系,可以畫出一個樹形的結構。在對樹形結構遍歷時,分為自上而下,自下而上,平行遍歷。我們可以通過bs4庫的屬性獲取到某一個標簽的父類,子類或者兄弟節點來定位我們需要的信息。

分析具體網址

查看學校排名網址的源代碼,找到我們需要的信息的位置。我們要找的就是學校排名,名稱,還有總分。通過觀察可以看到這幾個信息都在tr標簽下,每一個tr就是一行信息。那要找到tr的老板,找到了tbody。tbody只有一個,那找到他下面所有的tr,就找到了我們要的排名信息。

開動吧!

import bs4

ulist=[]

soup=BeautifulSoup(html,'html.parser')

for tr in soup.find('tbody').children:#find所有tbody下面節點

if isinstance(tr, bs4.element.Tag):#如果獲取到的tr是標簽才繼續

tds=tr('td')#把td標簽下信息放到列表tds里

ulist.append([tds[0].string,tds[1].string,tds[4].string])#將我們想打印的信息放在列表ulist里

輸出爬取的信息

先輸出一個表頭,再依次輸出前十名的排序。

print("{:^10}\t{:^10}\t{:^10}".format("排名","學校","總分"))

for i in range(10):

u=ulist[i]

print("{:^10}\t{:^10}\t{:^10}".format(u[0],u[1],u[2]))

成功了嗎?沒有

輸出以后發現只有序號和總分,沒有學校名稱,輸出u查看下獲取到的信息具體是啥。

可以看到學校名稱獲取到的是空,返回查看源代碼,發現在學校名稱的td下面還有a標簽,然后才是名稱。那要回去到名稱就需要找到a標簽,然后獲取a標簽下的字符串就行了。

tds=tr('td')

a=tr.find('a')

ulist.append([tds[0].string,a.string,tds[4].string])

重新出發

這次獲取到了名稱,但是格式不對了。不管怎么調整寬度,這三個字符就是不在一行。那只能看看他的真面目了!

輸出后發現每個獲取到的數據都有空格和換行,那當然不在一行了(攤手)

情況就是這么個情況,只能在獲取時把空格換行這些都去掉。

ulist.append([tds[0].string.strip(' \n'),a.string,tds[4].string.strip('\n ')])

編輯輸出格式,添加中文占位符,輸出前10排名的大學

總結

以上是生活随笔為你收集整理的python爬虫分析大学排名_Python爬虫获得国内高校排名,python,获取,大学排名的全部內容,希望文章能夠幫你解決所遇到的問題。

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