您好,登錄后才能下訂單哦!
這篇文章主要介紹python如何爬取電影天堂的最新電影,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
本次爬取的站點選擇電影天堂,網址是: www.ydtt8.net。爬取內容是整個站點的所有電影信息,包括電影名稱,導演、主演、下載地址等。具體抓取信息如下圖所示:
電影天堂里面的電影數目成千上萬,電影類型也是讓人眼花繚亂。我們為了保證爬取的電影信息不重復, 所以要確定一個爬取方向。目前這情況真讓人無從下手。但是,我們點擊主頁中的【最新電影】選項,跳進一個新的頁面。驀然有種柳暗花明又一村的感覺。
由圖可知道,電影天堂有 5 個電影欄目,分別為最新電影、日韓電影、歐美電影、國內電影、綜合電影。每個欄目又有一定數量的分頁,每個分頁有 25 條電影信息。那么程序的入口可以有 5 個 url 地址。這 5 個地址分別對應每個欄目的首頁鏈接。
知道爬取入口,后面的工作就容易多了。我通過測試發現這幾個欄目除了頁面的 url 地址不一樣之外,其他例如提取信息的 xpath 路徑是一樣的。因此,我把 5 個欄目當做 1 個類,再該類進行遍歷爬取。
我這里“最新電影”為例說明爬取思路。
1)請求欄目的首頁來獲取到分頁的總數,以及推測出每個分頁的 url 地址;
2)將獲取到的分頁 url 存放到名為 floorQueue 隊列中;
3)從 floorQueue 中依次取出分頁 url,然后利用多線程發起請求;
4)將獲取到的電影頁面 url 存入到名為 middleQueue 的隊列;
5)從 middleQueue 中依次取出電影頁面 url,再利用多線程發起請求;
6)將請求結果使用 Xpath 解析并提取所需的電影信息;
7)將爬取到的電影信息存到名為 contentQueue 隊列中;
8)從 contentQueue 隊列中依次取出電影信息,然后存到數據庫中。
根據爬取思路,我設計出爬蟲架構。如下圖所示:
主要闡述幾個重要的類的代碼
main 類
主要工作兩個:第一,實例化出一個dytt8Moive
對象,然后開始爬取信息。第二,等爬取結束,將數據插入到數據庫中。
處理爬蟲的邏輯代碼如下:
創建數據庫以及表,接著再把電影信息插入到數據庫的代碼如下:
TaskQueue 類
維護 floorQueue、middleQueue、contentQueue 三個隊列的管理類。之所以選擇隊列的數據結構,是因為爬蟲程序需要用到多線程,隊列能夠保證線程安全。
dytt8Moive 類
dytt8Moive 類是本程序的主心骨。程序最初的爬取目標是 5 個電影欄目,但是目前只現實了爬取最新欄目。如果你想爬取全部欄目電影,只需對 dytt8Moive 稍微改造下即可。
getMoiveInforms
方法是主要負責解析電影信息節點并將其封裝成字典。在代碼中,你看到 Xpath 的路徑表達式不止一條。因為電影天堂的電影詳情頁面的排版參差不齊,所以單單一條內容提取表達式、海報和影片截圖表達式、下載地址表達式遠遠無法滿足。
選擇字典類型作為存儲電影信息的數據結構,也是自己爬坑之后才決定的。這算是該站點另一個坑人的地方。電影詳情頁中有些內容節點是沒有,例如類型、豆瓣評分,所以無法使用列表按順序保存。
我這里展示自己爬取最新欄目中 4000 多條數據中前面部分數據。
以上是“python如何爬取電影天堂的最新電影”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。