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