点击上方“IT共享之家”,进行关注html
回复“资料”可获赠Python学习福利python
【1、项目背景】正则表达式
相信你们都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,并且不能直观的知道最近电影更新的状态。小程序
今天小编以电影天堂为例,带你们更直观的去看本身喜欢的电影,而且下载下来。ruby
【2、项目准备】
服务器
首先 咱们第一步咱们要安装一个Pycharm的软件。Pycharm软件安装能够看这篇教程:Python环境搭建—安利Python小白的Python和Pycharm安装详细教程。微信
电影天堂网的网址:网络
https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html
咱们须要下载几个库,怎么下载呢?首先打开Pycharm点击File再点开setting。app
打开后会出现这个界面点击你的项目名字(project:(你的项目名字))project interpreter点击加号下载咱们须要的库本项目须要(requests,requests,time,re模块),以下图所示。框架
若是不会加载解释器的话,能够参考这篇手把手教程:安装好Pycharm后如何配置Python解释器简易教程。
若是还缺乏相应库的话,能够按照以下方式进行下载和安装。
【3、项目实施】
咱们须要(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那么就照常显示,不然就给它一个空值,这样就不会不对应了。最后返回这个结果,以下图所示。
点开第二级页面如图右键点击下载连接,以下图所示:
咱们用正则表达式解析 获得咱们下载连接地址,以下图所示:
看去了不是很美观,咱们把连接处理一下,以下图所示:
获得结果,以下图所示:
最后咱们用把数据保存在一个字典加上下载连接和电影名字:
最后咱们优化一下请求的代码有点重复 咱们优化一下;
用一个值去保存说明请求头的内容之后请求咱们只有调用这个方法进行请求就好,以下图所示:
程序运行以后能够看到效果图,以下图所示:
点击蓝色的连接就能够这个下载(要下载迅雷 迅雷下载更快哇)
这样是否是可以更直观的看出你要电影啦?点击便可下载噢!
【5、总结】
1. 本文基于Python网络爬虫技术,提供了一种更直观的去看本身喜欢的电影而且方便下载的方式。
2. 不建议抓取太多,容易使得服务器负载。
3. 须要本文代码的话,后台回复“电影天堂”四个字便可获取。
------------------- 送书 -------------------
一、《Python数据科学实践》,内容如其书名,很少赘述,欢迎你们前来取书,共送2本书。
参与方式:在本公众号后台回复 “送书”关键字,便可参与本次的送书活动。
公布时间:2020年12月2号(周三)晚上20点
领取事宜:请小伙伴添加小助手微信: pycharm1314,或者扫码添加好友。添加小助手的每个人均可以领取一份Python学习资料,更重要的是方便联系。
注意事项:必定要留意微信消息,若是你是幸运儿就尽快在小程序中填写收货地址、书籍信息。一天以内没有填写收货信息,送书名额就转给其余人了噢,欢迎参与~
看完本文有收获?请转发分享给更多的人
IT共享之家
入群请在微信后台回复【入群】
------------------- End -------------------
往期精彩文章推荐:
本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。