Python3。x x +迅雷自动下载高分电影的实现方法

  

快要过年了,大家都在忙些什么呢?一到年底公司各种抢票,备年货,被这过年的气氛一烘,都归心似箭,哪还有心思上班啊。归心似箭=产出低下=一行代码十个错=无聊。于是想起了以前学过一段时间的Python,自己平时也挺爱看电影的,手动点进去看电影详情然后一部一部的去下载太烦了,何不用Python写个自动下载电影的工具呢?诶,这么一想就不无聊了。以前还没那么多XX会员的时候,想看看电影都是去XX天堂去找电影资源,大部分想看的电影还是有的,就它了,爬它!

  

话说以前玩Python的时候爬过挺多网站的,都是在公司干的(Python不属于公司的业务范围,纯属自己折腾着好玩),我那个负责运维的同事天天跑过来说:你又在爬啥啊,你去看看新闻,某某爬东西又被抓了!出了事你自己负责啊!哎呀我的娘亲,吓的都没继续玩下去了。这个博客是爬取某天堂的资源(具体是哪个天堂下面的代码里会有的),会不会被抓啊?单纯的作为技术讨论,个人练的手,不做商业用途应该没事吧?写到这里小手不禁微微颤抖…

  

得嘞,死就死吧,我不入地狱谁入地狱,先看最终实现效果:

  

 Python3。x x +迅雷自动下载高分电影的实现方法

  

如上,这个下载工具是有界面的(牛皮吧),只要输入一个根地址和电影评分,就可以自动爬电影了,要完成这个工具需要具备以下知识点:

  
      <李> <>强PyCharm的安装和使用这个不多说,猿们都懂,不属于猿类的我也没办法科普了,就是个IDE李   <李> <强> tkinter 这是个Python GUI开发的库,图中这个简陋的可怜的界面就是基于TK开发的,不想要界面也可以去掉,丝毫不影响爬电影,加上用户界面可以显得屌一点,当然最主要的是我想学习一点新知识<强>静态网页的分析技巧相对于动态网站的爬取,静态网站的爬取就显得小菜了,F12会按吧,右键查看网页源代码会吧,通过这些简单的操作就可以查看网页的排版布局规则,然后根据这些规则写爬虫,soeasy李   <李> <>强数据持久化已经下载过的电影,下次再爬电影的时候不希望再下载一次吧,那就把下载过的链接存储起来,下载电影之前去比对是否下载过,以过滤重复下载李   <李> <>强迅雷X的下载安装这个就更不用多说了,作为当代社会主义有为青年,谁没用过迅雷?谁的硬盘里没有几部动作类型的片子?李   
  

差不多就这些了,至于实现的技术细节的话,也不多,<强>请求+ BeautifulSoup 的使用,<强>再保险正则,<强> Python数据类型,<强> Python线程,<强> dbm,泡菜等数据持久化库的使用,等等,这个工具也就这么些知识范畴了。当然,Python是面向对象的,编程思想是所有语言通用的,这个不是一朝一夕的事,也没办法通过语言描述清楚。各位对号入座,以上哪个知识面不足的自己去翻资料学习,我可是直接贴代码的。

  

说到Python的学习还是多说两句吧,以前学习Python爬虫的时候看的是@工匠若水https://blog.csdn.net/yanbober的博客,这哥们的Python文章写的真不错,对于有过编程经验却从没接触过Python的人很有帮助,基本上很快就能上手一个小项目,得嘞,撸代码:

        进口url_manager   进口html_parser   进口html_download   进口persist_util   从tkinter进口*   从线程进口线程   进口操作系统      类SpiderMain(对象):   def __init__(自我):   自我。mUrlManager=url_manager.UrlManager ()   自我。mHtmlParser=html_parser.HtmlParser ()   自我。mHtmlDownload=html_download.HtmlDownload ()   自我。mPersist=persist_util.PersistUtil ()      #加载历史下载链接   def load_history(自我):   history_download_links=self.mPersist.load_history_links ()   如果history_download_links不是没有和len (history_download_links)比;0:   在history_download_links download_link:   self.mUrlManager.add_download_url (download_link)   d_log(“加载历史下载链接:“+ download_link)      #保存历史下载链接   def save_history(自我):   history_download_links=self.mUrlManager.get_download_url ()   如果history_download_links不是没有和len (history_download_links)比;0:   self.mPersist.save_history_links (history_download_links)      def craw_movie_links(自我、root_url得分=8):   数=0;   self.mUrlManager.add_url (root_url)   虽然self.mUrlManager.has_continue ():   试一试:   数=数+ 1   url=self.mUrlManager.get_url ()   d_log(胃% d: % s %(计数,url))   头={   “用户代理”:“Mozilla/5.0 (Windows NT 6.1;Win64;AppleWebKit x64)/537.36 (KHTML,像壁虎)Chrome/62.0.3202.62 Safari/537.36”,   “推荐人”:url   }=self.mHtmlDownload内容。down_html (url, retry_count=3,头=标题)   如果内容不是没有:   医生=content.decode (gb2312,“忽略”)   movie_urls next_link=self.mHtmlParser.parser_movie_link (doc)   如果movie_urls不是没有和len (movie_urls)比;0:   在movie_urls movie_url:   d_log(“电影信息的url:”+ movie_url)=self.mHtmlDownload内容。down_html (movie_url retry_count=3,标题=标题)   如果内容不是没有:   医生=content.decode (gb2312,“忽略”)   movie_name、movie_score movie_xunlei_links=self.mHtmlParser。parser_movie_info(医生,分数=分数)   如果movie_xunlei_links不是没有和len (movie_xunlei_links)比;0:   在movie_xunlei_links xunlei_link:   #判断该电影是否已经下载过了   is_download=self.mUrlManager.has_download (xunlei_link)   如果is_download==假:   #没下载过的电影添加到迅雷下载列的表   d_log(“开始下载”+ movie_name +”,链接地址:' + xunlei_link)   self.mUrlManager.add_download_url (xunlei_link)   os.system”(r D: \迅雷\雷声\程序\风头。exe”{url}’.format (url=xunlei_link))   #每下载一部电影都实时更新数据库,这样可以保证即使程序异常退出也不会重复下载该电影   self.save_history ()   如果next_link不是没有:   d_log('下一个链接:' + next_link)   self.mUrlManager.add_url (next_link)   除了例外e:   d_log(“错误信息:“+ str (e))         def跑步者(rootLink=None, scoreLimit=None):   如果rootLink没有:   返回   蜘蛛=SpiderMain ()   spider.load_history ()   如果scoreLimit没有:   spider.craw_movie_links (rootLink)   其他:   蜘蛛。craw_movie_links (rootLink,得分=(scoreLimit)浮动)   spider.save_history ()      # rootLink=' https://www.dytt8.net/html/gndy/dyzz/index.html '   # rootLink=' https://www.dytt8.net/html/gndy/dyzz/list_23_207.html '   def开始(rootLink scoreLimit):   loop_thread=线程(目标=跑步,arg游戏=(rootLink、scoreLimit)、name=把废叱獭?   # loop_thread.setDaemon(真正的)   loop_thread.start ()   # loop_thread.join() #不能让主线程等待,否则GUI界面将卡死   btn_start.configure(状态=敖谩?      #刷新GUI界面,文字滚动效果   def d_log(日志):   s=日志+ ' \ n '   三种。插入(最终,s)   txt.see(结束)      if __name__==癬_main__”:   rootGUI=Tk ()   rootGUI.title (“XX电影自动下载工具”)   #设置窗体背景颜色   black_background=' # 000000 '   rootGUI.configure(背景=black_background)   #获取屏幕宽度和高度   screen_w screen_h=rootGUI.maxsize ()   #居中显示窗体   window_x=(screen_w - 640)/2   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python3。x x +迅雷自动下载高分电影的实现方法