Python 通过正则表达式快速获取电影的下载地址


Posted in Python onAugust 17, 2020

在爬取网页信息时,如果在HTML代码中通过获取标签的方式来提取电影的下载地址时,不仅要编写比较多的代码,还需要不断的确认每一层的标签是否正确,这样的操作无疑是烦琐的。如下图所示。那么通过什么方式既可以减少代码量,又可以很简单的提取指定标签的内容呢?本文将实现通过正则表达式快速获取电影的下载地址。如果对正则表达式不熟悉的读者,点击 此处 学习正则表达式。

Python 通过正则表达式快速获取电影的下载地址

在爬取网页信息的任务中,可以使用正则表达式的方式快速的提取某个标签内的指定信息,以爬取电影的下载地址为例。本案例需要注意编码格式的问题,单击鼠标右键,如图所示查看网页编码:

Python 通过正则表达式快速获取电影的下载地址

代码如下:

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" rel="external nofollow" class="ulink">2020年动作《绝地战警:疾速追击》BD中英双字幕</a>
  movies_info = re.findall(r'<a href="(.*?)" rel="external nofollow" 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=".*?" rel="external nofollow" >(.*?)</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:ygdy8@yg39.dydytt.net:8014/阳光电影www.ygdy8.com.名字之歌.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg90.dydytt.net:6015/阳光电影www.ygdy8.com.我仍然相信.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:8018/阳光电影www.ygdy8.com.阿肯色.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:4028/阳光电影www.ygdy8.com.惊天营救.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg90.dydytt.net:8067/阳光电影www.ygdy8.com.狩猎的时间.BD.1080p.韩语中字.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:7018/阳光电影www.ygdy8.com.7号房的礼物.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:8017/阳光电影www.ygdy8.com.格蕾特和韩塞尔.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:3028/阳光电影www.ygdy8.com.看不见的女人.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg90.dydytt.net:7067/阳光电影www.ygdy8.com.我们永不言弃.HD.1080p.国语中字.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:4026/阳光电影www.ygdy8.com.军人的妻子.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg90.dydytt.net:6014/阳光电影www.ygdy8.com.匹诺曹.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:4025/阳光电影www.ygdy8.com.叶问4:完结篇.BD.1080p.国粤双语中字.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:3024/阳光电影www.ygdy8.com.节奏组.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:8013/阳光电影www.ygdy8.com.江湖儿女.BD.1080p.国语中字.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:3026/阳光电影www.ygdy8.com.琼斯先生.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:7013/阳光电影www.ygdy8.com.地球最后的夜晚.BD.1080p.国语中字.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:3023/阳光电影www.ygdy8.com.梦幻岛.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:4023/阳光电影www.ygdy8.com.拧紧.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:4026/阳光电影www.ygdy8.com.悲惨世界.BD.1080p.法语中字.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:4022/阳光电影www.ygdy8.com.真人快打传奇:蝎子的复仇.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg18.dydytt.net:7016/阳光电影www.ygdy8.com.我的间谍.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:3021/阳光电影www.ygdy8.com.从不,很少,有时,总是.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:4025/阳光电影www.ygdy8.com.绝地战警:疾速追击.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg39.dydytt.net:3020/阳光电影www.ygdy8.com.绅士们.BD.1080p.中英双字幕.mkv']
['ftp://ygdy8:ygdy8@yg90.dydytt.net:8065/阳光电影www.ygdy8.com.二分之一的魔法.BD.1080p.中英双字幕.mkv']
1

笔者在这里声明,笔者写文章只是为了 学习交流,以及让更多学习Python基础的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系删除即可。

到此这篇关于Python 通过正则表达式快速获取电影的下载地址的文章就介绍到这了,更多相关Python 正则表达式下载地址内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现网页链接提取的方法分享
Feb 25 Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python的SQLAlchemy框架使用入门
Apr 29 Python
开始着手第一个Django项目
Jul 15 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
简单了解Python3里的一些新特性
Jul 13 Python
Django中URL的参数传递的实现
Aug 04 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
Python基础教程,Python入门教程(超详细)
Jun 24 Python
Python 程序员必须掌握的日志记录
Aug 17 #Python
Python使用urlretrieve实现直接远程下载图片的示例代码
Aug 17 #Python
Python 如何查找特定类型文件
Aug 17 #Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 #Python
无需压缩软件,用python帮你操作压缩包
Aug 17 #Python
用Python制作mini翻译器的实现示例
Aug 17 #Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 #Python
You might like
多文件上载系统完整版
2006/10/09 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
简单谈谈favicon
2015/06/10 PHP
php实现的http请求封装示例
2016/11/08 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
php实现登录页面的简单实例
2019/09/29 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
Python的另外几种语言实现
2015/01/29 Python
Django中间件实现拦截器的方法
2018/06/01 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
Python进度条的制作代码实例
2019/08/31 Python
Django框架 信号调度原理解析
2019/09/04 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
企业精细化管理实施方案
2014/03/23 职场文书
家长对学生的评语
2014/04/18 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
八年级英语教学计划
2015/01/23 职场文书
武当山导游词
2015/02/03 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
总结几个非常实用的Python库
2021/06/26 Python
JavaScript执行机制详细介绍
2021/12/06 Javascript