目的

  1. 爬取盗版电影天堂
  2. 设置分类,获取指定类型的电影下载链接

流程

  1. 获取主页源码
  2. 筛选主页源码中各个类型电影的榜单
  3. 获取各个榜单中电影的详情页链接
  4. 获取各个详情页的源码
  5. 筛选详情页源码,获取需要的下载链接,并输出

分析代码

1. 获取网页

url= "https://www.dytt89.com"

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}  ##设置UA,防止反爬

resp=requests.get(url,*headers*=headers)  ##通过request.get获取网页源码

resp.encoding = "gbk" ##根据网站编码类型调整

2. 摘取需要的内容

  • 利用re模块,编写相应规则
  • 使用re.compile编写规则
  • obj=re.compile(r'<li>.*?href=\'(?P<link>.*?)\'', re.S)
  • re.S 是 Python 中 re 模块中的一个标志,它用于改变正则表达式的行为,使得点号(.)可以匹配包括换行符在内的所有字符

3. 获取榜单子页面链接

  1. 用re.finditer获取所有内容
obj1=re.compile(rf'{re.escape(movie_type)}.*?<ul>(?P<bangdan>.*?) </ul>', re.S)
result=obj1.finditer(resp.text)

其中定义所需要获取的内容为bangdan

利用{re.escape()}来引入变量

  1. 用循环输出所需要的内容
for i in result:
  ul=i.group("bangdan")
  1. 初始化一个空列表,用于存储链接
quanlianjie=[]
  1. 同步骤一的方法,获取每个榜单的链接
obj2=re.compile(r'<li>.*?href=\'(?P<link>.*?)\'', re.S)
result2=obj2.finditer(ul)
for a in result2:
    lianjie=url+a.group("link")
    quanlianjie.append(lianjie)

其中,利用append将合成好的链接放于列表中,方便下一次循环使用

4. 创建文件存储输出结果

with open(f'{movie_type}.txt', 'w', encoding='utf-8') as f

以写入模式('w')打开一个名为 movie_type.txt 的文件,其中 movie_type 是一个变量,当执行时会被替换为其值

encoding='utf-8'` 指定了文件的编码格式为 UTF-8

这行代码的上下文是将从电影详情页中提取的磁力链接写入到该文件中

5. 同上流程获取子页面源码,并筛选

for i in quanlianjie:    
        resp2=requests.get(i,headers=headers) 
        resp2.encoding = "gbk"
        obj3=re.compile(r'<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href=".*?">(?P<magnet>.*?)</a>', re.S)
        result3=obj3.finditer(resp2.text)
        for j in result3:
            magnet=j.group("magnet")

6. 写入文件

f.write(magnet + '\n')
最后修改:2025 年 07 月 18 日
如果觉得我的文章对你有用,请随意赞赏