20213226 實驗四 Python綜合實踐
20213226 2021-2022-2 《Python程式設計》實驗四 Python綜合實踐
課程:《Python程式設計》
班級: 2132
姓名: 劉思佳
學號:20213226
實驗教師:王志強
實驗日期:2022年5月29日
必修/選修: 公選課
1.實驗內容
(Python綜合應用:爬蟲、資料處理、視覺化、機器學習、神經網路、遊戲、網路安全等。)
實驗思路:使用爬蟲爬取豆瓣新片具體資訊並存入excel中,最後進行視覺化分析。
2. 實驗過程及結果
1.呼叫requests,使用正則表示式得到新上映電影的姓名、最初上映時間、評分以及評價人數,建立csv格式文件並將資料存入。具體程式碼如下:
import requests import re f = open("paihang_1.csv", mode="w", encoding='utf-8') url = "https://movie.douban.com/chart"##目標網址 headers = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }##偽裝成瀏覽器傳送請求 resp = requests.get(url , headers=headers) ##print(resp.text) page_content=resp.text obj = re.compile(r' <div class="pl2">.*?<a href="https://movie.douban.com/subject/.*?/" class="">(?P<name>.*?)/ <span style="font-size:13px;">.*?' r'<p class="pl">(?P<time>.*?)/.*?' r'<span class="rating_nums">(?P<score>.*?)</span>.*?' r'<span class="pl">(?P<comment_number>.*?)</span>.*?<td valign="top">', re.S)##使用正則表示式爬取目標資訊 result = obj.finditer(page_content) for it in result: name = it.group("name").strip() time = it.group("time") score = it.group("score") comment_number = it.group("comment_number") f.write(f"{name},{time},{score},{comment_number}\n") resp.close()##不要忘記關閉請求通道
2.使用excel開啟csv文件。
3.安裝pyecharts,pandas進行視覺化分析。
from pyecharts.charts import Bar from pyecharts import options as opts bar = Bar() # 繪製柱形圖 bar.add_xaxis(["瞬息全宇宙","暗夜博士:莫比亞斯","網路煉獄:揭發N號房","唐頓莊園2","壞蛋聯盟","萬湖會議","漁港的肉子醬","迷失之城"]) # 加入X軸引數 bar.add_yaxis("評分", [7.8,5.7,7.7,8.4,6.4,7.3,8.2,8.2,5.6]) # 加入Y軸引數 bar.set_global_opts(title_opts=opts.TitleOpts(title="豆瓣新片榜單", subtitle="評分")) # 生成圖表標題和副標題 bar.render()
4.在華為雲執行。
1.第一次執行直接將爬蟲資料寫入csv文件,可以從ls羅列顯示出的csv的文件看出執行成功。
2.只看文件不夠明顯,將爬蟲資料print出來。
在原始碼最後加入 print(f"{name},{time},{score},{comment_number}\n")再次執行即可。
3. 實驗過程中遇到的問題和解決過程
-
問題1:qequests顯示安裝完成但始終報錯。
-
問題1解決方案:將python新增為pycharm的python解析器。
-
問題2:爬蟲資料跨行不頂頭。
-
問題2解決方案:加.strip()去除左右兩邊多餘空格。
其他(感悟、思考等)
1.全科感想及總結
本學期學到的內容可以說是非常的豐富,有變數賦值、運算子及其優先順序、基本資料型別、迴圈語句、列表、元組、字典、集合、字串與正則表達、Python操作資料庫、Python爬蟲等等內容,可以說是在非常有限的時間最大程度的瞭解了python這門語言。而且我個人感覺在本學期的收穫應當不僅限於是相關知識點的瞭解和掌握,更是在不斷嘗試,遇到困難,然後再努力尋求解決方案的過程中一點點磨練出的耐心,一步步紮實的基礎,一層層拓寬的找尋資料的渠道和角度,都是在本學期學習python過程中很大的收穫。講到這裡不得不說的就是王老師在我的python學習過程中給予的極大包容耐心和幫助,因為我打小自帶與計算機不和的體質,所以總會遇到很多離奇的問題,甚至在嘗試解決的過程中又犯另一個錯誤,然後再解決,再遇到問題……所以在這個過程中,很多很多次向老師請教,老師都非常耐心的幫助我解決問題,還鼓勵我一定要解決問題而不是逃避問題(記得是解決選錯gitee本地庫的時候老師說的……那個問題折磨我至少三週……),所以我在感覺些許愧疚的同時更多是對老師的感激和敬佩,希望將來還有機會和老師學習交流。最後,我非常清楚的認識到自己的python水平還有非常大的提升空間,所以我會,也必須會,懷著謙虛的態度不斷學習,充實自己,也在學習其他各種程式語言過程中,帶著本學期老師教給我們的方法,去嘗試更多,學習更多,畢竟學海無涯可不僅僅只是說說而已的。
2.意見和建議
或許老師可以在將來的講課過程中淺談一下,“如何在網站高效搜尋自己對應的錯誤解決方法”,因為很多錯誤型別相似但不一樣,這也是我試著搜尋解決問題時苦惱的地方,即需要花很多時間篩選和瀏覽。
參考資料
1.https://www.zhihu.com/answer/660177988
2.https://www.bilibili.com/video/BV16f4y1s7sR?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click