1. 程式人生 > >4爬蟲例項----大學排名

4爬蟲例項----大學排名

輸入:大學排名網站的url連結
輸出:大學排名資訊的螢幕輸出(排名,學校名稱,總分)
技術:requests-bs4
此為定向爬蟲,僅對給定的url進行爬取,不擴充套件爬取

步驟1:獲取網頁內容 getHTMLText()
步驟2:提取所需內容並放入合適的資料結構中fillUnivList()
步驟3:展示結果 printUnivList()

import requests
from bs4 import BeautifulSoup使用bs4庫中的BeautifulSoup類
import bs4 為了使用bs4庫中的標籤型別定義
解決編碼問題
import sys
reload(sys)
sys.setdefaultencoding(“utf-8”)

def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return “”

def fillUnivList(ulist,html):
soup=BeautifulSoup(html,“html.parser”)
for tr in soup.find(‘tbody’).children:
if isinstance(tr,bs4.element.Tag):判斷是tr標籤的
tds=tr(‘td’)tr中的td標籤存在tds中,(…)==.find_all(…)
ulist.append([tds[0].string,tds[1].string,tds[2].string])

def printUnivList(ulist,num):
^10意思是長度10
tplt="{0:10}\t{1:10}\t{2:^10}"
採用中文字元填充空格補齊chr(12288),自動補齊會預設英文空格補齊
print(tplt.format(“排名”,“學校名稱”,“總分”,chr(12288)))
實現表頭的列印
for i in range(num):
u=ulist[i]
print(tplt.format(u[0],u[1],u[2],char(12288)))

def main():
uinfo=[]
url=’’
html=getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)

main()