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使用urllib2模块实现断点续传下载的方法
Jun 17 Python
利用Python如何生成hash值示例详解
Dec 20 Python
python使用sqlite3时游标使用方法
Mar 13 Python
Python贪心算法实例小结
Apr 22 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
Flask框架钩子函数功能与用法分析
Aug 02 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
python em算法的实现
Oct 03 Python
Python之Sklearn使用入门教程
Feb 19 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
一个改进的UBB类
2006/10/09 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
python进阶教程之循环对象
2014/08/30 Python
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Django Highcharts制作图表
2016/08/27 Python
Python解惑之整数比较详解
2017/04/24 Python
python逆序打印各位数字的方法
2018/06/25 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
Python代码需要缩进吗
2020/07/01 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
经济担保书范文
2014/04/02 职场文书
喋血孤城观后感
2015/06/08 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
Vue操作Storage本地化存储
2022/04/29 Vue.js