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实现ftp客户端示例分享
Feb 17 Python
python中循环语句while用法实例
May 16 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
python实现下载文件的三种方法
Feb 09 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
解决tensorflow添加ptb库的问题
Feb 10 Python
python实现处理mysql结果输出方式
Apr 09 Python
python 实现有道翻译功能
Feb 26 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
如何使用python包中的sched事件调度器
Apr 30 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
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
python操作xml文件示例
2014/04/07 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python yield与实现方法代码分析
2018/02/06 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
简单了解python列表和元组的区别
2020/05/14 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
python 字符串格式化的示例
2020/09/21 Python
python实现图片转字符画的完整代码
2021/02/21 Python
构造器Constructor是否可被override?
2013/08/06 面试题
市场营销大学生职业规划书
2014/02/25 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
中班开学寄语
2014/04/04 职场文书
借款协议书
2014/09/16 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2015年党性分析材料
2014/12/19 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js
Redis Lua脚本实现ip限流示例
2022/07/15 Redis