一、概述

对于一个宅男,喜欢看电影,每次打开电影网站,各种弹出的广告,很是麻烦,还是要自己去复制下载链接到迅雷上粘贴并下载,这个过程中还有选择困难症;这一系列的动作让人甚是不爽,不如有下好的,点着看就好了;作为一个python爱好者,结合对爬虫的一点小了解,于是周末花了点时间用python写了一个爬取某电影网站上的最新电影板块;
思路:
爬虫针对某电影网站,收集电影名,下载链接,评分,等信息;当天更新的电影,特别的打印出来;同时通过评分调用迅雷下载,当然先判断下,是否已经下载过了,再决定是否下载;然后,就是可以看了~

本次版本是基于python3.x下通过,在windows上才能调用迅雷~linux平台只能获取相关信息!
python安装和相关的模块安装这里不讲述,如有不明白请留言我~
jupyter上运行如下:

二、代码

废话不多说上代码吧~

# coding:utf-8
# version 20181027 by san
import re,time,os
from urllib import request
from lxml import etree  # python xpath 单独使用导入是这样的
import platform
import ssl
ssl._create_default_https_context = ssl._create_unverified_context   # 取消全局证书#爬虫电影之类
class getMovies:def __init__(self,url,Thuder):'''        实例初始化       '''self.url = urlself.Thuder = Thuderdef getResponse(self,url):url_request = request.Request(self.url)url_response = request.urlopen(url_request)return url_response   #返回这个对象def newMovie(self):''' 获取最新电影 下载地址与url '''http_response = self.getResponse(webUrl) #拿到http请求后的上下文对象(HTTPResponse object)data = http_response.read().decode('gbk')#print(data)  #获取网页内容html = etree.HTML(data)newMovies = dict()lists = html.xpath('/html/body/div[1]/div/div[3]/div[2]/div[2]/div[1]/div/div[2]/div[2]/ul/table//a')for k in lists:if "app.html" in k.items()[0][1] or "最新电影下载" in k.text:continueelse:movieUrl = webUrl + k.items()[0][1]movieName = k.text.split('《')[1].split("》")[0]newMovies[k.text.split('《')[1].split("》")[0]] = movieUrl = webUrl + k.items()[0][1]return newMoviesdef Movieurl(self,url):''' 获取评分和更新时间 '''url_request = request.Request(url)movie_http_response = request.urlopen(url_request)data = movie_http_response.read().decode('gbk')if len(re.findall(r'豆瓣评分.+?.+users',data)):  # 获取评分;没有评分的返回nullpingf = re.findall(r'豆瓣评分.+?.+users',data)[0].split('/')[0].replace("\u3000",":")else:pingf = "豆瓣评分:null"desc = re.findall(r'简\s+介.*',data)[0].replace("\u3000","").replace('<br />',"").split("src")[0].replace('&ldquo',"").replace('&rdquo',"").replace('<img border="0"',"")times = re.findall(r'发布时间.*',data)[0].split('\r')[0].strip()   # 获取影片发布时间html = etree.HTML(data)murl = html.xpath('//*[@id="Zoom"]//a')for k in murl:for l in k.items():if "ftp://" in l[1]:printreturn l[1],times,pingf,descdef check_end(self,fiename,path):''' 检测文件是否下载完成 '''return os.path.exists(os.path.join(save_path,fiename))def check_start(self,filename):''' 检测文件是否开始下载 '''cache_file = filename+".xltd"return os.path.exists(os.path.join(save_path,cache_file))def DownMovies(self,name,url):''' windows下载 '''PlatForm = platform.system()print("即将下载的电影是:%s" %name)if PlatForm == "Windows":try:print(r'"{0}" "{1}"'.format(self.Thuder,url))os.system(r'"{0}" {1}'.format(self.Thuder,url))except Exception as e:print(e)else:print("当前系统平台不支持")def Main(self):''' 最终新电影存储在字典中 '''NewMoveis = dict()  Movies = self.newMovie()  # 获取电影的字典信息for k,v in Movies.items():NewMoveis[k] = self.Movieurl(v),vreturn NewMoveisdef NewMoives(self):''' 查看已经获取到的电影信息 '''Today = time.strftime("%Y-%m-%d")print("今天是:%s" %Today)Movies = self.Main()print("最近的 %s 部新电影:" % len(Movies.keys()))for k,v in Movies.items():
#           print(v[0][1].split(":")[0])if Today in v[0][1].split(":")[0]:print("++++++++++++++++今天刚更新++++++++++++++:","\n",k,"-->",v,"\n")else:print("========================================")print(k,"-->",v,"\n")if __name__ == '__main__':# 以下依据您个人电影迅雷的相关信息填写即可save_path="O:\迅雷下载"     # 电影下载保存位置 (需要填写)Thuder = "O:\Program\Thunder.exe"   #Thuder: 迅雷Thuder.exe路径 (需要填写)webUrl = 'http://www.dytt8.net'     # 电影网站test = getMovies(webUrl,Thuder)   # 实例化test.NewMoives()Movies = test.Main()for k,v in Movies.items():movies_name = v[0][0].split('/')[3]socre = v[0][2].split(":")[1]check_down_status = test.check_end(movies_name,save_path)
#       print(check_down_status)if  check_down_status:print("电影: %s 已经下载" %movies_name)continueelif  socre == 'null':continueelif float(socre) > 7.0:print(movies_name,socre)test.DownMovies(k,v[0][0])time.sleep(10)

注意:以上代码是针对windows平台下,迅雷版本为非极速版本,本次使用的是9.14 如图:

另外需要勾选以下配置项,否则程序调用迅雷下载时会有提示框:

程序运行效果如图:

再看下O盘 下载的目录:

至此自动获取最新电影并下载指定评分电影完成~ 再也不用担心选择困难了,下好看就行了~

补充说明:
这只是一个基本的获取并下载电影的程序,也可能扩充成下载好发邮件,或不想下载,定时运行,有新电影发邮件提示的功能~更功能自行发挥吧,如有那位大牛知道linux下自行下载的方法,欢迎留言交流,谢谢~如果觉得还可以,不要忘记点个赞哦~

转载于:https://blog.51cto.com/dyc2005/2309658

python爬取电影并下载相关推荐

  1. python爬取电影天堂的下载链接

    python爬取电影天堂dytt8的下载链接 电影天堂下载链接都是magnet的,搞下来想下就下没有广告 建一个main.py 一个一个挨着去爬肯定慢啊,建一个多线程的去爬 mui.py 多线程有可能 ...

  2. 爬虫学习(一)---爬取电影天堂下载链接

    欢迎加入python学习交流群 667279387 爬虫学习 爬虫学习(一)-爬取电影天堂下载链接 爬虫学习(二)–爬取360应用市场app信息 主要利用了python3.5 requests,Bea ...

  3. Python 爬取电影天堂top最新电影

    Python爬虫有他无可比拟的优势:语法简单,经常几十行代码就能轻松解决问题,相比于JAVA,C,PHP;第三方库丰富,Python强大而又丰富的第三方库使他几乎可以无所不能.今天我们就来用用Pyth ...

  4. 我用Python爬取了难下载的电子教材(内附代码)

    我用Python爬取了难下载的电子教材(内附代码) 第一次在CSDN上面分享经历,有点激动.本大二狗最近这段时间去不了学校又想看教材,不巧学习通上面的部分内容老师设置了不可下载啊.好在最近学习了一点P ...

  5. python爬取电影天堂新片精品模块电影列表,并用迅雷下载

    python版本是3.6.5,上代码: # 爬取电影天堂 from selenium import webdriver import requests from bs4 import Beautifu ...

  6. 使用python爬取电影下载地址并使用transmissionrpc下载

    说明 python练手,爬取电影天堂的新电影,获取到磁力链接,输出到日志文件,使用transmissionrpc下载, 涉及知识点: 1.python 操作mongodBD,参考文档 2.Beauti ...

  7. python爬取电影评分_用Python爬取猫眼上的top100评分电影

    代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...

  8. python爬取电影天堂首页

    用python写了个小爬虫,用来爬取电影天堂首页放置的几十部电影的名称,上映日期和下载链接,用到了beautifulsoup库和lxml库用来解析 代码如下: import requests impo ...

  9. python爬取电影信息并插入至MySQL数据库

    在上篇博文中,博主使用python爬取了豆瓣电影的影片信息,接下来,博主考虑到在之前做的JavaWeb电影院项目中需要向数据库中一个个的插入影片数据,十分的繁琐,那么在使用了python爬虫后,这个操 ...

最新文章

  1. 关于A*寻路算法的认识
  2. python课程将主要介绍哪些内容-Python课程详细介绍
  3. 20180827-Java网络编程
  4. ASP.NET自定义错误页面(转)
  5. 《Atlas基础教程》勘误(持续更新)
  6. Machine Learning week 7 quiz: Unsupervised Learning
  7. html单元格选中状态,UITableViewCell 设置单元格选中后只显示一个打勾的状态
  8. SPSS异常值处理(图文+数据集)【SPSS 010期】
  9. 这 10 个 Python 可视化工具,你用过哪些?
  10. python爬取百度迁徙动态图_python爬虫动态爬取百度迁徙
  11. php-后台权限的思路
  12. Bzoj1001 [BeiJing2006]狼抓兔子
  13. 计算机软件考试——嵌入式系统设计师 知识点汇总
  14. 华为大数据研发第1轮面试
  15. 班级主页效果图html,DW制作网页|html静态页面|班级网页素材|蝶恋花班级主页网站...
  16. STC 51单片机53——电子指南针HMC5883l
  17. Raid5磁盘阵列数据恢复成功案例/服务器数据恢复方案
  18. DNF之架设搭建游戏流程讲解
  19. 世界杯中隐藏的IoT物联网黑科技
  20. android系统如何获得外置卡路径

热门文章

  1. 如何带好一个销售的团队——我的销数之路
  2. C++数据结构||为我院设计一个简单的教师信息管理程序。对我院教师进行管理,包括插入、删除、查找、排序等功能。教师信息包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
  3. 皇轩平台为你揭秘黑链市场的地下产业链
  4. dto转do和do转dto工具类
  5. js get请求和post请求
  6. 用VS2017 查看dmp文件,并且让其定位到源代码的位置,非反汇编
  7. 可怕!原来我们看到的世界地图一直都是“错”的!多年的地理白学了...
  8. 判断花心男人的几种方法*转载)
  9. linux命令显示进度,【命令】Linux下查看dd命令写入进度
  10. 同城跑腿APP开发需具备哪些功能?