20212112劉錦淑《Python程式設計》綜合實踐——實驗四
課程:《Python程式設計》
班級: 2121
姓名: 劉錦淑
學號:20212112
實驗教師:王志強
實驗日期:2022年5月30日
必修/選修: 公選課
(一)實驗要求
Python綜合應用:爬蟲、資料處理、視覺化、機器學習、神經網路、遊戲、網路安全等。
課代表和各小組負責人收集作業(原始碼、視訊、綜合實踐報告)
注:在華為ECS伺服器(OpenOuler系統)和物理機(Windows/Linux系統)上使用VIM、PDB、IDLE、Pycharm等工具程式設計實現。
批閱:注意本次實驗不算做實驗總分,前三個實驗每個實驗10分,累計30分。本次實踐算入綜合實踐,打分為25分。
評分標準:
(1)程式能執行,功能豐富。(需求提交原始碼,並建議錄製程式執行的視訊)10分
(2)綜合實踐報告,要體現實驗分析、設計、實現過程、結果等資訊,格式規範,邏輯清晰,結構合理。10分。
(3)在實踐報告中,需要對全課進行總結,並寫課程感想體會、意見和建議等。5分
(4)如果沒有使用華為雲服務(ECS或者MindSpore均可),本次實踐扣10分。
注意:每個人的實驗不能重複,課代表先統計大家做的內容並彙總,有重複的需要自行協商。
(二)實驗內容
爬蟲爬取虎牙直播平臺相關資料
(三)實驗過程及結果
一、利用Python的requests庫和BeautifulSoup庫編寫程式碼對網頁資料進行爬取
1.引入所需要的庫
2.爬取直播平臺的相關資料,包括直播間熱度、網址、直播使用者名稱、直播標題
二、將所得資料寫成csv檔案
三、Pycharm成果展示,同時生成csv檔案
四、在華為ESC伺服器上執行
1.登入winscp並將程式碼傳上去
2.在putty上執行
附:實驗原始碼
import requests from bs4 import BeautifulSoup url = 'https://www.huya.com/l' headers = { "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" } r = requests.get(url,headers = headers) r.raise_for_status() r.encoding = 'utf-8' html = BeautifulSoup(r.text,'html.parser') a = html.find_all('a',class_ ='recomend-item j_sidebar-recomend-item') urls1 = [] urls2 = [] urls3 = [] urls4 = [] urls1.append('熱度(萬)') urls2.append('網址') urls3.append('直播間') urls4.append('直播標題') urls=[] for i in a: href = i['href'] title = i['title'] #print(href,title) urls.append([href,title]) for url in urls: r = requests.get(url[0],headers = headers) r.raise_for_status() r.encoding = 'utf-8' html = BeautifulSoup(r.text,'html.parser') a = html.find_all('li',class_ = 'game-live-item') print(url[1]) for i in a: num = i.select('i',class_ = 'js-num')[3].text num = num.replace('萬','') title = i.select('img')[0]['alt'] href = i.select('a')[1]['href'] title1 = i.select('a')[1]['title']urls1.append(num) urls2.append([href]) urls3.append([title]) urls4.append([title1])
urls1_set = set(urls1) import csv with open('example.csv', 'w',encoding = 'utf-8',newline='') as f: writer = csv.writer(f) for i in range(len(urls1_set)): writer.writerow([urls1[i],urls2[i],urls3[i],urls4[i]]) (四)實驗過程中遇到的問題
問題1無法下載requests庫
解決辦法:上網查詢後發現是自己pip版本太低,進行了更新
問題2在putty上執行時發現包沒有導過去,無法執行
解決問題:在同學的幫助下解決
(五)結課感想與建議
1.課堂總結:輸入輸出,基本資料型別:整數型別,四種進製表示形式、浮點型別,字串型別正向遞增序號、反向遞減序號,索引和切片[ : ],字串的操作符,字串處理函式,字串處理”方法”字串型別格式化,python的分支語句(分支結構)if elif else 和迴圈語句(迴圈結構)while for continue break,集合與字典,集合間的運算,函式,def return 程式碼複用和封裝,面向物件程式設計 三要素:封裝、繼承、多型, 物件、類
2.結課感想:其實當初選修Python是因為聽說Python比較簡單,操作比較方便,而自己又是一個變成小白,之前從未接觸過程式設計程式碼。然後我就想著既然Python比較簡單的話,對於我這樣的小白來說可能比較友善,更好掌握。本著多掌握一門技術的心態,我選擇了Python。但等我開始學的時候,才發現原來這門課並沒有我想象中的那麼簡單,更糟糕的是,本學期我還有必修課C語言,在剛開始學的時候,偶爾還會把兩者弄混。但通過王老師的傾囊相授和自己不斷地學習,我也開始漸漸瞭解Python。我還記得當時在老師的帶領下第一次敲出一個猜數的小遊戲時,自己驚喜的心情。(當時拍的照片我還留著)
雖然後來隨著教學的逐漸深入,自己有點跟不上,但通過同學們的幫助我也能夠解決大部分的問題。
其實起初自己對程式設計並不感興趣,選Python也並不是因為喜歡,而是覺得大家都選了,自己不選感覺比別人少學了東西。但是出乎我意料的是王老師上課非常風趣幽默,自己學起來也不排斥,或者說覺得厭煩。雖然很多作業對我來說都有難度,但還是會認認真真的去完成。
總的來說,Python這門選修課帶給我的驚喜很多,成長也很多,自己以後空閒時間也會繼續去學習瞭解一些有關的知識。
3.課堂建議:王老師講課最吸引我的一點就是幽默風趣,教學不死板,總是能夠吸引我的注意力。但可能是自己太垃圾了(捂臉),個人感覺老師上課講課的速度稍微有一點點快,自己總是跟不上老師敲程式碼。對於我這樣的小白來說,學起來比較吃力(哭)。所以老師講課速度可以稍稍慢一點,或者在課後把上課敲的程式碼和PPT發到班群裡,有需要的同學可以再學習學習。