一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接
点击上方“IT共享之家”,进行关注
回复“资料”可获赠Python学习福利
【一、项目背景】
相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态。
今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来。
【二、项目准备】
首先 我们第一步我们要安装一个Pycharm的软件。Pycharm软件安装可以看这篇教程:Python环境搭建—安利Python小白的Python和Pycharm安装详细教程。
电影天堂网的网址:
https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html
我们需要下载几个库,怎么下载呢?首先打开Pycharm点击File再点开setting。
打开后会出现这个界面点击你的项目名字(project:(你的项目名字))project interpreter点击加号下载我们需要的库本项目需要(requests,requests,time,re模块),如下图所示。
如果不会加载解释器的话,可以参考这篇手把手教程:安装好Pycharm后如何配置Python解释器简易教程。
如果还缺少相应库的话,可以按照如下方式进行下载和安装。
【三、项目实施】
我们需要(requests,requests,time,re模块 ),如下图所示。
用封装方法去实现各个部分功能。首先要写一个框架 :构造一个类FilmSky 然后定义一个—init方法里继承(self),再定义一个主方法(main)。最后实现这个main方法。代码如下:
这个time是用于防止反爬,设置的时间延时。
首先我们来分析一下这个网址下一页得到特点。
通过点击了三页我们会发现地址都是在原有的基础上“23—3,4,5”这样的变化。
我们可以用{}去代替变化的值就像这样:
https://www.ygdy8.net/html/gndy/dyzz/list_23_{}.html
这样我们在inti方法初始化url地址和构造请求头。
在主方法main函数里边用for循环实现遍历网址。
得到下图这样的结果:
说明你已经成功一半了加油!!
现在我们需要对这些网址发生请求,为了更直观的看出来,我们用一个类写。
我们用requests发生请求 这个网站的编码是gbk (怎么看网站的编码?)。
打开一个网站右键检查在header的标签,以这个网站为例,可以看到charset=“gb312”。
这个gb2312就是编码 我们常见的编码方式有2种(utf_8, gbk)。
我们可以验证一下是不是真的请求到了。使用Print(html)看到这个结果(一个完整的html网页)说明请求成功。
我们再定义这个方法(对我们的网页代码进行解析)。
我们用正则表达式 来解析数据 我们右键检查可以看到我们要的网站在table里面的<tr>标签的<b>标签的<a>标签的href。
所以我们可以先找到table,一层一层的去找,可以参考一下下面的图。
正则表达式就是(.*?)里面就是你想要得到的内容,“.*?”就是可以省略其中的标签,取到你想要地区那一层。for循环遍历得到每个网址,点击这些网址我们要对二级页面发生请求,并解析它。
因为在网页网址上的链接有一些是空的 ,所有这样会导致电影下载的链接不匹配。所以我们要加个判断,如果下载链接的长度大于0那么就照常显示,否则就给它一个空值,这样就不会不对应了。最后返回这个结果,如下图所示。
点开第二级页面如图右键点击下载链接,如下图所示:
我们用正则表达式解析 得到我们下载链接地址,如下图所示:
看去了不是很美观,我们把链接处理一下,如下图所示:
得到结果,如下图所示:
最后我们用把数据保存在一个字典加上下载链接和电影名字:
最后我们优化一下请求的代码有点重复 我们优化一下;
用一个值去保存说明请求头的内容以后请求我们只有调用这个方法进行请求就好,如下图所示:
程序运行之后可以看到效果图,如下图所示:
点击蓝色的链接就可以这个下载(要下载迅雷 迅雷下载更快哇)
这样是不是能够更直观的看出你要电影啦?点击即可下载噢!
【五、总结】
1. 本文基于Python网络爬虫技术,提供了一种更直观的去看自己喜欢的电影并且方便下载的方式。
2. 不建议抓取太多,容易使得服务器负载。
3. 需要本文代码的话,后台回复“电影天堂”四个字即可获取。
------------------- 送书 -------------------
1、《Python数据科学实践》,内容如其书名,不多赘述,欢迎大家前来取书,共送2本书。
参与方式:在本公众号后台回复 “送书”关键字,即可参与本次的送书活动。
公布时间:2020年12月2号(周三)晚上20点
领取事宜:请小伙伴添加小助手微信: pycharm1314,或者扫码添加好友。添加小助手的每一个人都可以领取一份Python学习资料,更重要的是方便联系。
注意事项:一定要留意微信消息,如果你是幸运儿就尽快在小程序中填写收货地址、书籍信息。一天之内没有填写收货信息,送书名额就转给其他人了噢,欢迎参与~
看完本文有收获?请转发分享给更多的人
IT共享之家
入群请在微信后台回复【入群】
------------------- End -------------------
往期精彩文章推荐:
本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MindSpore手写数字识别初体验,深度学习也没那么神秘嘛
摘要:想了解深度学习却又无从下手,不如从手写数字识别模型训练开始吧! 深度学习作为机器学习分支之一,应用日益广泛。语音识别、自动机器翻译、即时视觉翻译、刷脸支付、人脸考勤……不知不觉,深度学习已经渗入到我们生活中的每个角落,给生活带来极大便利。即便如此,依然有很多人觉得深度学习高深莫测、遥不可及,的确,它有深奥之处,非专业人士难以企及,但也有亲和力十足的一面,让没有基础的小白也能轻松上手,感受深度学习的魅力,接下来要介绍的手写数字识别模型训练正是如此。 手写数字识别初探 手写数字识别是计算机视觉中较为简单的任务,也是计算机视觉领域发展较早的方向之一,早期主要用于银行汇款、单号识别、邮政信件、包裹的手写、邮编识别等场景,目前手写数字识别已经达到了较高的准确率,得到大规模的推广与应用。虽然手写数字识别本身的领域比较狭窄,实用性有限,但是在它基础上发展起来的卷积神经网络等计算机视觉技术早已应用在更为复杂的任务中,因此,手写数字识别也成为计算机视觉领域衡量算法表现的一个基准任务。所以,通过这一实践场景来了解神经网络开发和训练,可谓再好不过了。如何使用深度学习框架MindSpore进行模型开发与...
- 下一篇
5000多张数据表,如何用SQL迁移到数据仓库?
点击关注上方“SQL数据库开发”, 设为“置顶或星标”,第一时间送达干货 需求背景 最近公司打算集中梳理几大业务系统的数据,希望将各个业务系统中的数据集中到数据仓库中。总共有5000多张数据表,但是好在业务数据量没有像电商那么庞大,也就几十个G。 需求分析 其实这个需求很简单,就是把这5000多张不同数据库中的表放到一个地方。需要注意的有以下几点: 1、数据来自各种不同类型的数据库,有SQL Server,MySQL和Oracle 2、表的数据量较多,一个一个写查询代码肯定不现实 3、后续数据仓库的维护 方案建议 由于数据量不是很大,我打算用DBLINK来实现从不同的库中抽取数据到数据仓库中。 方案思路 1、创建不同的DBLINK 数据仓库我们目前使用的是SQL Server的服务器,整体性能还可以。但是业务系统的数据库类型不一,在新建DBLINK时有不同的要求: a、针对SQL Server的业务数据库可以直接在服务器上新建 b、针对MySQL和Oracle的业务数据库需要先使用ODBC作用中间组件来配置。 2、查询数据库中的所有表表名 每个业务数据库都是全库抽取,那么首先需要找到这...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7设置SWAP分区,小内存服务器的救世主
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块