QingYi. 发表于 2021-5-30 11:45

使用Python手刃電影天堂裡面的電影下載資源

鑒於昨天寫了一個沒X用的豆瓣top250爬取資源之後,有朋友說沒有下載資源;於是乎我大清早又開始學習Python了。
這次來練手的是電影天堂(好啦,實際上是盜版)中的電影資源,是最近更新的幾部電影,獲取名字 + 迅雷下載地址
電影鏈接在代碼裡面有
期間在編寫Regular Expression的途中由於自己的一個小失誤,導致拿不到數據,折騰了半天,好難過,本來10點就可以發帖的

把print注釋放開,就能查看每一步的結果


所獲取到的資源都是可下載的

# first find the position
# second find the resource address
# third get the download address
import re
import requests

# 定義好需要練手的網站
url = "https://www.dydytt.net/index.htm"
# 取消驗證 verify = False
resp = requests.get(url, verify=False)
# 由於網站編碼和本地不一樣,要設置encoding
resp.encoding = "gb2312"
# print(resp.text)
# get the li in ul

# obj1、2和3都是正則
obj1 = re.compile(r'<div class="co_content2">.*?<ul>(?P<ul>.*?)</ul>', re.S)
# get subpage address
obj2 = re.compile(r"<a href='/html/gndy/dyzz/2021(?P<href>.*?)'", re.S)
obj3 = re.compile(r'◎片  名(?P<name>.*?)<br />.*?<a target="_blank" href="(?P<download>.*?)">', re.S)
# 拿到打開URL之後進過re正則表達式過濾後的頁面
res1 = obj1.finditer(resp.text)
# 定義好一個列表,方便後續直接遍歷子頁面 以獲得想要的下載地址
sub_list = []
for r in res1:
    ul = r.group('ul')
    # print(ul)
    # 拿到想要的標籤之後,放進obj2正則裡面過濾,得到其想要的下一步數據,就是href跳轉的標籤,我們後續要拼接起來
    res2 = obj2.finditer(ul)
    for r2 in res2:
      # print(r2.group("href"))
      # 拼接之後 放入列表裡面

      '''
      這裡有一個問題需要注意
      /html/gndy/jddy/20160320/50523.html
      這個頁面左邊“最新電影更新:”第一個鏈接是這個,2016開頭的,所以我們需要過濾它,我選擇最簡單的辦法,直接拿2021最新電影
      '''
      child_href = "https://www.dydytt.net/html/gndy/dyzz/2021" + r2.group("href").strip("/")
      # print(child_href)
      sub_list.append(child_href)

# 遍歷子頁面,拿到子頁面的電影名字和下載地址
for href in sub_list:
    # 遍歷拼接的子頁面,也就是單獨一個電影的頁面
    child_resp = requests.get(href, verify=False)
    child_resp.encoding = "gb2312"
    # print(href)
    # print("------------------------------")
    # print(child_resp.text)
    # 再次過濾一遍,拿到電影名字和下載地址
    res3 = obj3.search(child_resp.text)
    print(res3.group("name") + " 下載鏈接是: " + res3.group("download") + "\n")
    # print(res3.group("download"))

在新标签打开所有链接复制所有链接URL复制所有链接URL(反向)复制所有链接标题 + URL复制所有链接标题 + URL (MD)复制所有链接标题 + URL (BBS)复制所有链接标题 + URL (筛选)复制所有链接标题 + URL (设置复制格式)在新标签页打开所有图片链接在一个标签页显示所有图片链接
复选框 - 选中
复选框 - 取消
复选框 - 反选
单选框 - 选中
单选框 - 取消
特殊单选框 - 选中

kk159 发表于 2021-5-30 12:51

代码核心就是regex,
可以尝试解析响应数据,利用bs4,xpath提取标签生成通用规则,

QingYi. 发表于 2021-5-30 16:47

kk159 发表于 2021-5-30 12:51
代码核心就是regex,
可以尝试解析响应数据,利用bs4,xpath提取标签生成通用规则,

確實是這樣,剛剛好學到這裡,我是一步一步學上去的

lovehfs 发表于 2021-5-30 11:53

第一时间点个赞!

pojie666 发表于 2021-5-30 12:28

人生苦短

Grimlad 发表于 2021-5-30 12:41

优秀————

SupKevin 发表于 2021-5-30 12:46

{:301_987:} 感谢楼主分享

yahao360 发表于 2021-5-30 13:24

报错11111

QingYi. 发表于 2021-5-30 13:29

yahao360 发表于 2021-5-30 13:24
报错11111

這是正常的 這個要添加證書我略過了。我這邊也提示這樣

念所不及 发表于 2021-5-30 13:32

学习了,人生苦短我用python

雨之幽 发表于 2021-5-30 14:46

可以可以。。
页: [1] 2
查看完整版本: 使用Python手刃電影天堂裡面的電影下載資源