一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

Karen110
• 阅读 1069

【一、项目背景】

相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态。

今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

【二、项目准备】

首先 我们第一步我们要安装一个Pycharm的软件。Pycharm软件安装可以看这篇教程:Python环境搭建—安利Python小白的Python和Pycharm安装详细教程

电影天堂网的网址:

https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html

我们需要下载几个库,怎么下载呢?首先打开Pycharm点击File再点开setting。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

打开后会出现这个界面点击你的项目名字(project:(你的项目名字))project interpreter点击加号下载我们需要的库本项目需要(requests,requests,time,re模块),如下图所示。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

如果不会加载解释器的话,可以参考这篇手把手教程:安装好Pycharm后如何配置Python解释器简易教程

如果还缺少相应库的话,可以按照如下方式进行下载和安装。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

【三、项目实施】

我们需要(requests,requests,time,re模块 ),如下图所示。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

用封装方法去实现各个部分功能。首先要写一个框架 :构造一个类FilmSky 然后定义一个—init方法里继承(self),再定义一个主方法(main)。最后实现这个main方法。代码如下:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

这个time是用于防止反爬,设置的时间延时。

 首先我们来分析一下这个网址下一页得到特点。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

通过点击了三页我们会发现地址都是在原有的基础上“23—3,4,5”这样的变化。

我们可以用{}去代替变化的值就像这样:
https://www.ygdy8.net/html/gndy/dyzz/list_23_{}.html
这样我们在inti方法初始化url地址和构造请求头。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

在主方法main函数里边用for循环实现遍历网址。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

得到下图这样的结果:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

说明你已经成功一半了加油!!

现在我们需要对这些网址发生请求,为了更直观的看出来,我们用一个类写。

我们用requests发生请求 这个网站的编码是gbk (怎么看网站的编码?)。

打开一个网站右键检查在header的标签,以这个网站为例,可以看到charset=“gb312”。

这个gb2312就是编码 我们常见的编码方式有2种(utf\_8,  gbk)。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

我们可以验证一下是不是真的请求到了。使用Print(html)看到这个结果(一个完整的html网页)说明请求成功。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

我们再定义这个方法(对我们的网页代码进行解析)。

我们用正则表达式 来解析数据 我们右键检查可以看到我们要的网站在table里面的<tr>标签的<b>标签的<a>标签的href。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

所以我们可以先找到table,一层一层的去找,可以参考一下下面的图。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

正则表达式就是(.\*?)里面就是你想要得到的内容,“.\*?”就是可以省略其中的标签,取到你想要地区那一层。for循环遍历得到每个网址,点击这些网址我们要对二级页面发生请求,并解析它。

因为在网页网址上的链接有一些是空的 ,所有这样会导致电影下载的链接不匹配。所以我们要加个判断,如果下载链接的长度大于0那么就照常显示,否则就给它一个空值,这样就不会不对应了。最后返回这个结果,如下图所示。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

点开第二级页面如图右键点击下载链接,如下图所示:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

我们用正则表达式解析 得到我们下载链接地址,如下图所示:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

看去了不是很美观,我们把链接处理一下,如下图所示:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

得到结果,如下图所示:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

最后我们用把数据保存在一个字典加上下载链接和电影名字:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

最后我们优化一下请求的代码有点重复 我们优化一下;

用一个值去保存说明请求头的内容以后请求我们只有调用这个方法进行请求就好,如下图所示:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

程序运行之后可以看到效果图,如下图所示:

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

点击蓝色的链接就可以这个下载(要下载迅雷 迅雷下载更快哇)

这样是不是能够更直观的看出你要电影啦?点击即可下载噢!

【五、总结】

1\. 本文基于Python网络爬虫技术,提供了一种更直观的去看自己喜欢的电影并且方便下载的方式。
  1. 不建议抓取太多,容易使得服务器负载。

  2. 需要本文代码的话,后台回复“电影天堂”四个字即可获取。

**-----**------**-----**---**** 送书 **-----**--------**-----**-****

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

**-----**------**-----**---**** End **-----**--------**-----**-****

往期精彩文章推荐:

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这