一篇文章教會你利用Python網絡爬蟲獲取電影天堂視頻下載連接

【1、項目背景 】html

相信你們都有一種頭疼的體驗,要下載電影特別費勁,對吧?要一部一部的下載,並且不能直觀的知道最近電影更新的狀態。python

今天小編以電影天堂爲例,帶你們更直觀的去看本身喜歡的電影,而且下載下來。正則表達式

不少人學習python,不知道從何學起。
不少人學習python,掌握了基本語法事後,不知道在哪裏尋找案例上手。
不少已經作案例的人,殊不知道如何去學習更加高深的知識。
那麼針對這三類人,我給你們提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的源代碼!
QQ羣:1097524789服務器

【2、項目準備 】網絡

首先 咱們第一步咱們要安裝一個Pycharm的軟件。Pycharm軟件安裝能夠看這篇教程: Python環境搭建—安利Python小白的Python和Pycharm安裝詳細教程 。框架

電影天堂網的網址:函數

https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html

咱們須要下載幾個庫,怎麼下載呢?首先打開Pycharm點擊File再點開setting。學習

打開後會出現這個界面點擊你的項目名字(project:(你的項目名字))project  interpreter點擊加號下載咱們須要的庫本項目須要(requests,requests,time,re模塊),以下圖所示。優化

若是不會加載解釋器的話,能夠參考這篇手把手教程: 安裝好Pycharm後如何配置Python解釋器簡易教程 。網站

若是還缺乏相應庫的話,能夠按照以下方式進行下載和安裝。

【3、項目實施】

咱們須要(requests,requests,time,re模塊 ),以下圖所示。

用封裝方法去實現各個部分功能。首先要寫一個框架 :構造一個類FilmSky 而後定義一個—init方法裏繼承(self),再定義一個主方法(main)。最後實現這個main方法。代碼以下:

這個time是用於防止反爬,設置的時間延時。

首先咱們來分析一下這個網址下一頁獲得特色。

經過點擊了三頁咱們會發現地址都是在原有的基礎上「23—3,4,5」這樣的變化。

咱們能夠用{}去代替變化的值就像這樣:

https://www.ygdy8.net/html/gndy/dyzz/list_23_{}.html

這樣咱們在inti方法初始化url地址和構造請求頭。

在主方法main函數裏邊用for循環實現遍歷網址。

獲得下圖這樣的結果:

說明你已經成功一半了加油!!

如今咱們須要對這些網址發生請求,爲了更直觀的看出來,咱們用一個類寫。

咱們用requests發生請求 這個網站的編碼是gbk (怎麼看網站的編碼?)。

打開一個網站右鍵檢查在header的標籤,以這個網站爲例,能夠看到charset=「gb312」。

這個gb2312就是編碼 咱們常見的編碼方式有2種(utf_8,  gbk)。

咱們能夠驗證一下是否是真的請求到了。使用Print(html)看到這個結果(一個完整的html網頁)說明請求成功。

咱們再定義這個方法(對咱們的網頁代碼進行解析)。

咱們用正則表達式 來解析數據 咱們右鍵檢查能夠看到咱們要的網站在table裏面的<tr>標籤的<b>標籤的<a>標籤的href。

因此咱們能夠先找到table,一層一層的去找,能夠參考一下下面的圖。

正則表達式就是(.*?)裏面就是你想要獲得的內容,「.*?」就是能夠省略其中的標籤,取到你想要地區那一層。for循環遍歷獲得每一個網址,點擊這些網址咱們要對二級頁面發生請求,並解析它。

由於在網頁網址上的連接有一些是空的 ,全部這樣會致使電影下載的連接不匹配。因此咱們要加個判斷,若是下載連接的長度大於0那麼就照常顯示,不然就給它一個空值,這樣就不會不對應了。最後返回這個結果,以下圖所示。

點開第二級頁面如圖右鍵點擊下載連接,以下圖所示:

咱們用正則表達式解析 獲得咱們下載連接地址,以下圖所示:

看去了不是很美觀,咱們把連接處理一下,以下圖所示:

獲得結果,以下圖所示:

最後咱們用把數據保存在一個字典加上下載連接和電影名字:

最後咱們優化一下請求的代碼有點重複 咱們優化一下;

用一個值去保存說明請求頭的內容之後請求咱們只有調用這個方法進行請求就好,以下圖所示:

程序運行以後能夠看到效果圖,以下圖所示:

點擊藍色的連接就能夠這個下載( 要下載迅雷 迅雷下載更快哇 )

這樣是否是可以更直觀的看出你要電影啦?點擊便可下載噢!

【5、總結】

1. 本文基於Python網絡爬蟲技術,提供了一種更直觀的去看本身喜歡的電影而且方便下載的方式。

2. 不建議抓取太多,容易使得服務器負載。

相關文章
相關標籤/搜索