#!/usr/bin/env python
# coding: utf-8
import bs4
import requests
from bs4 import beautifulsoup
# 通過傳入**資訊建立乙個獲取網頁文字的函式
def gethtmltext(url):
# 判斷獲取網頁文字過程中是否有錯誤
try:
# 開啟**獲取文字,並且把延遲設定成30s
r = requests.get(url, timeout=30)
# 獲取狀態碼
r.raise_for_status()
# 設定檔案編碼
# 如果成功返回網頁文字
return r.text
except:
# 獲取網頁文字有錯誤則返回空文字
return ""
# 通過傳入空列表和網頁文字資訊建立乙個在大學列表中加入大學資訊的函式
def fillunivlist(ulist, html):
# 用beautifulsoup將網頁文字以』html.parser『煮成一鍋粥
soup = beautifulsoup(html, "html.parser")
# 通過網頁源**我們可以發現我們需要的資訊都在tbody標籤內,因此我們迴圈找出』tbody『標籤及其子標籤的內容
for tr in soup.find('tbody').children:
# 通過bs4.element.tag判斷是否為tr標籤
if isinstance(tr, bs4.element.tag):
# 對於tr標籤的我們拿到tr標籤裡的td標籤
tds = tr('td')
# [1, 清華大學
, 北京, 95.3...
# 我們通過篩選出我們需要的td標籤中的文字並將其用列表的方式加入我們傳入的列表ulist中
tds[2].string, tds[3].string])
# 通過傳入學校列表資訊建立乙個列印大學列表的函式
def printunivlist(ulist,province):
# 列印標題
print("中國最好大學排名2018({}地區)".center(45, '-').format(province))
# 設定乙個format格式化的模板
# 注意:這裡的是因為utf8格式的英文和中文位元組數不同,python會自動用英文來填
tplt = "\t^10}\t\t"
# 充空白位置,我們用chr(12288)將其修改成用中文填充空白位置
# 列印第一行
print(tplt.format("排名", "學校名稱", "地區", "總分", chr(12288)))
if province == '安徽':
print(tplt.format(1, '安徽師範大學花津校區', '安徽', 99.9, chr(12288)))
# 迴圈取出列表中的每一所大學的資訊,取出的大學資訊是列表的形式(可以控制range(len(ulist))的長度來控制想要列印的學校的數量)
for i in range(len(ulist)):
# 將每一所大學的資訊以列表的形式賦值給u
u = ulist[i]
# u[2]是地區,判斷是否為安徽地區(可以自己更改地區資訊,如果刪除該判斷,列印所有學校資訊,也可以更改判斷條件)
if u[2] == province:
# 如果為安徽地區,我們列印屬於安徽地區的每一所大學的資訊
print(tplt.format(u[0], u[1], u[2], u[3], chr(12288)))
# 建立乙個執行函式
def main(province='安徽'):
# 建立乙個空列表,為填充大學資訊列表做準備
uinfo =
# 定義乙個想要爬取的網頁
url = ''
# 傳入想要爬取的網頁獲取該網頁文字資訊
html = gethtmltext(url)
# 給填充大學資訊函式傳值
fillunivlist(uinfo, html)
# 給列印大學資訊函式傳值
printunivlist(uinfo,province=province)
main()
# main(province='北京')
Python爬蟲 中國大學排名爬蟲
案例 import requests from bs4 import beautifulsoup import bs4 def gethtmltext url 爬取最好大學排名 內容 try r requests.get url,timeout 30 r.raise for status retur...
爬蟲中國大學排名
from pip.vendor import requests print 訪問谷歌 獲取response物件 r requests.get x 1 while x 20 print 第 str x 次的返回狀態列印 str r.status code print 第 str x 次的text 列印...
Python 中國大學排名定向爬蟲
來自於中國大學mooc北京理工大學pythont教學團隊 1.函式版 中國大學定向爬蟲 import requests from bs4 import beautifulsoup import bs4 defgethtmltext url try r requests.get url,timeout...