20194123向海飛實驗四

學號 20194123《Python程序設計》實驗四報告

課程:《Python程序設計》
班級: 1941
姓名: 向海飛
學號:20194123
實驗教師:王志強
實驗日期:2020年6月13日
必修/選修: 公選課html

1.實驗內容

Python綜合應用:爬蟲、數據處理、可視化、機器學習、神經網絡、遊戲、網絡安全等。
選擇:爬蟲python

2. 實驗過程及結果

須要用到 bs4 、正則表達式、requests 的知識
找到網址http://zuihaodaxue.cn/ARWU2015.html
正則表達式

如圖知數據塊是 tbody,分析得html 中一行對應一個tr,世界排名、國家排名、總分能夠直接經過 tr[‘td’] 得到,而學校須要經過 tr[‘td’].a.string 得到,國家/地區須要經過 tr[‘td’].a[‘title’] 得到
過程以下:
導入相關庫:安全

import requests
from bs4 import BeautifulSoup
import bs4網絡

獲取網頁數據app

ef getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""機器學習

解析網絡數據函數

ef 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].a.string, tds[2].a['title'], tds[3].string, tds[4].string ])學習

顯示數據ui

def printUnivList(ulist, num):
tplt = "{0:10}\t{1:44}\t{2:16}\t{3:16}\t{4:^16}"
print(tplt.format("世界排名", "學校名稱", "國家/地區", "國家排名", "總分"), chr(12288))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[2], u[3], u[4]), chr(12288))

def main():
uinfo = []
url = 'http://zuihaodaxue.cn/ARWU2015.html'
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 80) # 20 univs

if name == 'main':
main()

結果以下圖:

3. 實驗過程當中遇到的問題和解決過程

  • 問題1:requests安裝失敗
  • 問題1解決方案:由於用戶名包含中文,因此安裝失敗,在安裝目錄 ,找到mimetypes.py文件,添加代碼,完成後保存,在cmd中執行pip install requests,以下圖所示,關於ascii的問題解決

其餘(感悟、思考等)

學習python已經有一學期了,我在本學期中學會了python的語言基礎,流程控制語句,其中for和while循環是最讓我花時間得,,後來得序列,函數都還好,但到了面向對象程序設計後就有些跟不上了。說實話對我來講有些困難,我本來覺得我就算一時間不會的話也能夠多花時間練習,但後來逐漸發現本身一天的課和做業下來就沒多長時間了,因此我學習python主要是在週三上課的時候,有時週末也會找雲班課學習一下。雖然有不少知識點都沒有很搞懂,但總的來講,這學期收穫仍是不少的,由於之前選的文科,總以爲本身也應該嘗試新的領域,因此學習python也算是得償所願吧。

相關文章
相關標籤/搜索