用Python的正则表达式爬取电影天堂的信息

最近在看视频学习python的爬虫部分,所以根据学习的内容写了一个利用python的正则表达式爬取电影天堂(https://www.dy2018.com)的2021必看热片的电影下载信息,仅用于控制台打印,并没有写入到文件中,代码注释写的应该算很详细了,也算是自己做的笔记吧,代码还有很多可以修改优化的地方,所以我的代码仅供参考。

代码如下:

import requests  # 导入请求库
import re  # 导入正则库

# 获取页面源代码
url = "https://www.dy2018.com"  # 电影天堂首页链接
response = requests.get(url)  # response接收链接的响应
response.encoding = "gb2312"  # 从页面源代码中发现页面编码格式为gb2312

# 解析数据
obj = re.compile(r'2021必看热片.*?<ul>(?P<ul>.*?)</ul>', re.S)  # 正则匹配出最外面的ul标签的内容
obj2 = re.compile(r"<li><a href='(?P<href>.*?)'", re.S)  # 正则匹配ul里面的所有子页面链接(不完整的页面链接)
obj3 = re.compile(r'◎片  名(?P<movie_name>.*?)<.*?td style="WORD-WRAP: break-word"'
                  r' bgcolor="#fdfddf"><a href="(?P<download>.*?)"', re.S)  # 正则匹配子页面里的电影名与迅雷下载链接

child_href_list = []  # 存放子页面的链接列表

# 获取数据
result = obj.finditer(response.text)  # 接收匹配到的ul内容
for i in result:  # result也就一个值,为ul列表的内容
    result2 = obj2.finditer(i.group("ul"))  # 接收所有的子页面的链接
    for j in result2:  # 遍历所有的子页面链接
        child_href = url + j.group("href")  # 与域名重组为完整的链接
        child_href_list.append(child_href)  # 放入子页面链接列表里

# 打印数据
for href in child_href_list:  # 遍历子页面的完整链接
    resp2 = requests.get(href)  # 循环请求子页面的链接
    resp2.encoding = "gb2312"  # 将页面编码改为gb2312
    res3 = obj3.search(resp2.text)  # 接收查找到的电影名与下载链接
    print(res3.group("movie_name"))  # 打印电影名
    print(res3.group("download"))  # 打印下载链接

运行结果:

用Python的正则表达式爬取电影天堂的信息
原创教程软件推荐

2021最新冰点文库3.2.7去广告可用绿色版

2021-6-25 8:40:12

Python教程

urllib和requests哪个好用?

2021-7-8 22:05:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索