【個人記錄】零基礎python爬蟲練習——七行程式碼爬取豆瓣一週口碑榜
本文用於記錄我自己的第一次python爬蟲練習,用七行程式碼來爬取豆瓣一週口碑榜。在這個練習中,我主要使用了python的requests庫和lmxl庫。兩者都是較容易上手的python網頁爬蟲第三方庫。由於我是真的零基礎,只知道一些python的基本語法,所以即使在有程式碼參考的情況下也遇到了一些問題,我通過這篇文章來對上次的經歷進行回顧。
起因
最近在進行python的學習,已經寫了一些例如陣列排序,猜數字小遊戲的小型程式,不過我一直沒有接觸過爬蟲(因為比較拖延,在廖雪峰的python教程上還沒有學到爬蟲的部分)。這次開始我的練習是因為在微信上看見了一篇文章,講七行程式碼爬取豆瓣一週口碑榜,看完心想:“這很容易嘛,那就拿他作為我的第一個爬蟲專案了”,於是我就開啟idle,建立一個新的py檔案,開始跟著教程走。
經過
整個爬蟲的開發過程分為編碼,解決問題和增加功能三部分。一開始以為只會花一點點時間(就和以為寫這篇文章只會花一點點時間一樣),當然事實證明,剛開始玩兒爬蟲,還是沒那麼輕鬆的,總會遇到些問題。不過,解決問題的過程也是很快樂的。
相關程式碼
先貼上我教程中一開始展示的程式碼(註釋是我自己加的,稍後會調重點解釋),程式碼確實只有七行,雖然在那篇微信文章上程式碼縮排出了問題,顯示只有六行,我剛開始還愣了一下。
#引入兩個第三方庫
import requests
from lxml import html
#需爬取的網頁地址
url = 'https://movie.douban.com/'
#訪問網頁
page = requests.Session().get(url)
#解析網頁內容
tree = html.fromstring(page.text)
result = tree.xpath('//td[@class=”title”]//a/text()')
print(result)
看了看程式碼,簡單吧?我重點來說說第六行的程式碼,此處引用文章原文的解釋:
//td :這個相當於大目錄;
[@class=”title”]:這個相當於小目錄;
//a :這個相當於最小的目錄;
/text():這個是提取其中的文字內容。
如果沒理解,那我先訪問一下網址: movie.douban.com, 到達頁面後按下F12,找到我要爬取的內容(電影名稱)的所在位置,即檢視該網頁的DOM結構(此處涉及到一點點HTML知識)。
從以上兩張圖可以看到,我要爬取的電影名稱位置是在class="title"的標籤< td >內部的標籤< a >中。也就是說,剛才的第六行程式碼是基於檢視了口碑榜位置,獲取到其DOM結構後編寫的(原教程中也有提到)。
然而,當我在IDLE中制行了相關程式碼後,出了問題,首先提示詞法錯誤,根據錯誤資訊提示,我意識到我使用的用的requests和lxml都是第三方庫,需要自行安裝。
問題解決
既然問題找到了,那麼解決起來就容易了,接下來就是面向搜尋引擎程式設計了(滑稽)。查到requests和lxml的安裝指令,以此在windows控制檯輸入:
pip install requests
pip install lxml
安裝完成後再次執行,emmmm,又報錯。根據錯誤資訊(缺失某個包),我瞭解到requests包的安裝比較複雜,因為它的配置依賴了urllib3,chardet,certifi等包,因此我要想成功引用requests包,還需要安裝其依賴包。我自己只遇到兩個缺失的包,一個是urllib3, 一個是chardet。因此最終通過在命令列輸入兩個安裝指令解決問題。
pip install urllib3
pip install chardet
安裝完成,重跑程式碼,得到了想要的結果,IDLE中以List的方式列印出了豆瓣一週的口碑榜,如圖所示。
程式功能增加
教程部分走完了,不過感覺這樣還不夠。我想再練習一下python的檔案操作,因此我新增了以下幾行程式碼,來實現將口碑榜的內容寫入一個名為result.txt的文字檔案中。
resFile = open("result.txt", 'w')
resFile.write(str(result))
resFile.close()
再次執行程式碼後,py檔案所在目錄出現了一個名為result.txt的檔案,其內容和IDLE中列印的內容相同。
總結
以此,我的第一個python爬蟲練習就完成了,相對來說是比較簡單的,不過能實現一個小玩爬蟲,還是有一點謎之成就感,夠我驕傲三秒鐘了。
我在以上的程式碼中引入了requests、lxml庫,分別實現訪問網頁、對網頁結構解析。對於這兩個庫我還不太熟悉,以後估計會更多地用到,實在記不住,那就要用的時候查吧。此外,我知道python有很多開源的庫,直接呼叫這些庫,一是避免了重複造輪子,增加工作量,二是大大降低了學習的門檻(當然以後技術更好一點,還是得學習如何造輪子的)。
接下來,我應該會有越來越多的小練習,不僅僅侷限於python爬蟲。我想以後也會遇到各種各樣的小問題,不過有網上各位前輩的經驗和教程,沒什麼可畏懼的。
相關文章
- python爬蟲練習之爬取豆瓣讀書所有標籤下的書籍資訊Python爬蟲
- Python爬蟲筆記(4):利用scrapy爬取豆瓣電影250Python爬蟲筆記
- 爬蟲學習筆記:練習爬取多頁天涯帖子爬蟲筆記
- 爬蟲練習——爬取縱橫中文網爬蟲
- python爬蟲練習--爬取虎牙主播原畫視訊Python爬蟲
- 爬蟲教程——用Scrapy爬取豆瓣TOP250爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- python爬蟲 爬取豆瓣電影 1-10 ajax 資料Python爬蟲
- 06、豆瓣爬蟲爬蟲
- 爬蟲豆瓣美女爬蟲
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- 用python寫一個豆瓣短評通用爬蟲(登入、爬取、視覺化)Python爬蟲視覺化
- 爬蟲練習--草稿爬蟲
- 一個人人網python爬蟲Python爬蟲
- Python爬蟲開發(一):零基礎入門Python爬蟲
- python爬蟲-1w+套個人簡歷模板爬取Python爬蟲
- Python 爬蟲零基礎教程(1):爬單個圖片Python爬蟲
- 爬蟲練手-豆瓣top250(go版以及python版)爬蟲GoPython
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- 爬蟲爬取微信小程式爬蟲微信小程式
- Python爬蟲學習(6): 爬取MM圖片Python爬蟲
- Python爬蟲學習(5): 簡單的爬取Python爬蟲
- 如何爬取視訊的爬蟲程式碼原始碼爬蟲原始碼
- Python爬蟲學習筆記(1)爬取知乎使用者資訊Python爬蟲筆記
- python——豆瓣top250爬取Python
- 從零基礎開始學習Python爬蟲你需要注意的點以及如何學習爬蟲Python爬蟲
- Python爬蟲訓練:爬取酷燃網視訊資料Python爬蟲
- 一入爬蟲深似海,總結python爬蟲學習筆記!爬蟲Python筆記
- [python爬蟲] BeautifulSoup和Selenium對比爬取豆瓣Top250電影資訊Python爬蟲
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- 3.24 爬蟲小週記爬蟲
- python爬蟲學習01--電子書爬取Python爬蟲
- Python 第一個爬蟲,爬取 147 小說Python爬蟲
- python 爬蟲 爬取 learnku 精華文章Python爬蟲
- python爬蟲——爬取大學排名資訊Python爬蟲
- Python零基礎爬蟲教學(實戰案例手把手Python爬蟲教學)Python爬蟲
- Python爬蟲 - 記一次字型反爬Python爬蟲