python爬虫技术路线_爬虫学习——中国大学最好排名(技术路线:requests库和bs4)(来源于北理工Python网络爬虫与信息提取网络公开课)...
"中國大學(xué)排名"定向爬蟲示例
課程地址:http://open.163.com/movie/2019/5/G/6/MEEMCM1NP_MEEU3UFG6.html
#功能描述:
#輸入:大學(xué)排名URL鏈接
#輸出:大學(xué)排名信息的屏幕輸出(排名,大學(xué)名稱,總分)
#使用技術(shù):requests庫和bs4
#定向爬蟲:僅對輸入URL進行爬取,不擴展爬取
#是否可以實現(xiàn):查看網(wǎng)頁源代碼判斷是否是靜態(tài)頁面
#查看robots協(xié)議:網(wǎng)頁不存在(無robots協(xié)議)
'''
程序的結(jié)構(gòu)設(shè)計:
1、從網(wǎng)絡(luò)上獲取大學(xué)排名網(wǎng)頁內(nèi)容——getHTMLText();
2、提取網(wǎng)頁內(nèi)容中信息到合適的數(shù)據(jù)結(jié)構(gòu)——fillUnivList();
3、利用數(shù)據(jù)結(jié)構(gòu)展示并輸出結(jié)果——printUnivList()
'''
import requests
from bs4 import BeautifulSoup
import bs4
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:
#過濾非標(biāo)簽信息
if isinstance(tr,bs4.element.Tag):
tds =tr('td')#查詢
ulist.append([tds[0].string,tds[1].string,tds[3].string])
#num指打印多少個元素出來
def printUnivList(ulist,num):
#格式化輸出
'''
中文字符寬度不夠,系統(tǒng)用英文進行填充,導(dǎo)致對齊出現(xiàn)問題
print("{:^10}\t{:^6}\t{:^10}".format("排名","學(xué)校名稱","總分"))
for i in range(num):
u=ulist[i]
print("{:^10}\t{:^6}\t{:^10}".format(u[0], u[1], u[2]))
采用中文字符的空格填充chr(12288)
'''
#優(yōu)化后的格式化輸出
tplt ="{0:^10}\t{1:{3}^10}\t{2:^10}"
print(tplt.format("排名", "學(xué)校名稱", "總分",chr(12288)))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[2],chr(12288)))
if __name__ == '__main__':
uinfo=[]#大學(xué)信息列表
url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html"
html=getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)
總結(jié)
以上是生活随笔為你收集整理的python爬虫技术路线_爬虫学习——中国大学最好排名(技术路线:requests库和bs4)(来源于北理工Python网络爬虫与信息提取网络公开课)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python条件语句函数_python
- 下一篇: python opencv直方图_【py