Python每日一練(15)-通過正則表達式快速獲取電影的下載地址

在爬取網頁信息時,如果在HTML代碼中通過獲取標籤的方式來提取電影的下載地址時,不僅要編寫比較多的代碼,還需要不斷的確認每一層的標籤是否正確,這樣的操作無疑是煩瑣的。如下圖所示。那麼通過什麼方式既可以減少代碼量,又可以很簡單的提取指定標籤的內容呢?本文將實現通過正則表達式快速獲取電影的下載地址。如果對正則表達式不熟悉的讀者,點擊 此處 學習正則表達式。
在這裏插入圖片描述
在爬取網頁信息的任務中,可以使用正則表達式的方式快速的提取某個標籤內的指定信息,以爬取電影的下載地址爲例。本案例需要注意編碼格式的問題,單擊鼠標右鍵,如圖所示查看網頁編碼:
在這裏插入圖片描述
代碼如下:

import re
import requests


def get_movies(url):
    # 構造請求頭
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/53"
                      "7.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
    }
    response = requests.get(url, headers=headers)  # 發送請求
    response.encoding = "gb2312"  # 設置編碼方式
    # 判斷請求是否成功 根據狀態碼是否等於200來判斷
    if response.status_code == 200:
        # 獲取每個電影詳情頁地址,通過正則表達式提取電影詳情頁地址
        # <a href="/html/gndy/dyzz/20200411/59903.html" class="ulink">2020年動作《絕地戰警:疾速追擊》BD中英雙字幕</a>
        movies_info = re.findall(r'<a href="(.*?)" class="ulink">', response.text)  # 返回符合表達式規則的數據列表
        print(len(movies_info))
        for url in movies_info:  # 循環每個電影的詳情頁地址
            info_url = "https://www.ygdy8.net" + url  # 拼接完整地址
            # 對電影詳情頁發送請求
            movies_info_response = requests.get(info_url, headers=headers)
            movies_info_response.encoding = "gb2312"  # 設置編碼方式
            # 通過表達式匹配電影的下載地址
            download_url = re.findall(r'<a href=".*?">(.*?)</a></td>', movies_info_response.text)
            print(download_url)


if __name__ == '__main__':
    get_movies("https://www.ygdy8.net/html/gndy/dyzz/index.html")

運行結果如下:

['ftp://ygdy8:[email protected]:8014/陽光電影www.ygdy8.com.名字之歌.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:6015/陽光電影www.ygdy8.com.我仍然相信.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:8018/陽光電影www.ygdy8.com.阿肯色.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:4028/陽光電影www.ygdy8.com.驚天營救.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:8067/陽光電影www.ygdy8.com.狩獵的時間.BD.1080p.韓語中字.mkv']
['ftp://ygdy8:[email protected]:7018/陽光電影www.ygdy8.com.7號房的禮物.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:8017/陽光電影www.ygdy8.com.格蕾特和韓塞爾.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:3028/陽光電影www.ygdy8.com.看不見的女人.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:7067/陽光電影www.ygdy8.com.我們永不言棄.HD.1080p.國語中字.mkv']
['ftp://ygdy8:[email protected]:4026/陽光電影www.ygdy8.com.軍人的妻子.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:6014/陽光電影www.ygdy8.com.匹諾曹.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:4025/陽光電影www.ygdy8.com.葉問4:完結篇.BD.1080p.國粵雙語中字.mkv']
['ftp://ygdy8:[email protected]:3024/陽光電影www.ygdy8.com.節奏組.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:8013/陽光電影www.ygdy8.com.江湖兒女.BD.1080p.國語中字.mkv']
['ftp://ygdy8:[email protected]:3026/陽光電影www.ygdy8.com.瓊斯先生.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:7013/陽光電影www.ygdy8.com.地球最後的夜晚.BD.1080p.國語中字.mkv']
['ftp://ygdy8:[email protected]:3023/陽光電影www.ygdy8.com.夢幻島.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:4023/陽光電影www.ygdy8.com.擰緊.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:4026/陽光電影www.ygdy8.com.悲慘世界.BD.1080p.法語中字.mkv']
['ftp://ygdy8:[email protected]:4022/陽光電影www.ygdy8.com.真人快打傳奇:蠍子的復仇.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:7016/陽光電影www.ygdy8.com.我的間諜.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:3021/陽光電影www.ygdy8.com.從不,很少,有時,總是.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:4025/陽光電影www.ygdy8.com.絕地戰警:疾速追擊.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:3020/陽光電影www.ygdy8.com.紳士們.BD.1080p.中英雙字幕.mkv']
['ftp://ygdy8:[email protected]:8065/陽光電影www.ygdy8.com.二分之一的魔法.BD.1080p.中英雙字幕.mkv']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章