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

點擊上方「IT共享之家」,進行關注html

回覆「資料」可獲贈Python學習福利python


【1、項目背景正則表達式

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

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


【2、項目準備
服務器

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

    電影天堂網的網址:網絡

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

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

打開後會出現這個界面點擊你的項目名字(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. 不建議抓取太多,容易使得服務器負載。

    3. 須要本文代碼的話,後臺回覆「電影天堂」四個字便可獲取。


------------------- 送書 -------------------

內容簡介

一、《Python數據科學實踐》,內容如其書名,很少贅述,歡迎你們前來取書,共送2本書

活動規則


參與方式:在本公衆號後臺回覆 「送書」關鍵字便可參與本次的送書活動。

公佈時間:2020年12月2號(週三)晚上20點

領取事宜:請小夥伴添加小助手微信: pycharm1314,或者掃碼添加好友。添加小助手的每個人均可以領取一份Python學習資料,更重要的是方便聯繫。

注意事項必定要留意微信消息,若是你是幸運兒就儘快在小程序中填寫收貨地址、書籍信息。一天以內沒有填寫收貨信息,送書名額就轉給其餘人了噢,歡迎參與~

看完本文有收穫?請轉發分享給更多的人

IT共享之家

入羣請在微信後臺回覆【入羣】

------------------- End -------------------

往期精彩文章推薦:

本文分享自微信公衆號 - Python爬蟲與數據挖掘(crawler_python)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索