Python实现--【简易】视频爬虫

  最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,这个程序中使用到了正则表达式(re模块),对爬回的网页进行匹配分析,最后通过urllib模块中urlretrieve()这个方法进行视频的下载,由于存在窗口,防止窗口在下载时候处于卡死状态,使用了threading模块,创建了一个线程去执行下载任务。以下是该程序的源码。

  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 #coding:utf-8
  4 # @Date    : 2016-12-28 11:18:40
  5 # @Author  : Donoy ([email protected])
  6 # @Link    : http://www.cnblogs.com/Donoy/
  7 # @Version : $Id$
  8
  9 #多线程 爬虫
 10 #GUI 界面
 11
 12 import os
 13 import requests
 14 import re
 15 import threading
 16 from   Tkinter import *
 17 from   ScrolledText import ScrolledText #文本滚动框
 18 import urllib #这个模块中有下载的功能
 19 import sys
 20 #sys 模块的输出编码 格式
 21 reload(sys)
 22 sys.setdefaultencoding(‘utf-8‘)
 23 Video_Data = []
 24
 25
 26 def creatWnd():
 27     global root
 28     global varl
 29     global text
 30
 31     #创建一个窗口
 32     root = Tk() # 窗口
 33
 34     #窗口的标题
 35     root.title(‘DSpider‘)
 36     #文本滚动窗口
 37     text = ScrolledText(root,font=(‘微软雅黑‘))
 38     text.grid()
 39
 40     #设置Lable
 41     varl = StringVar()
 42     lable = Label(root,font=(‘微软雅黑‘),fg=‘red‘,textvariable=varl)
 43     lable.grid()
 44     varl.set(‘Fight......‘)
 45
 46     #设置按钮
 47     button = Button(root,text=‘开始爬取‘,font=‘黑体‘,command=begin_Thread)
 48     button.grid()
 49
 50     #root.mainloop()     # 显示窗口
 51
 52 def getHtmlData(url):
 53     #print html.text               # 网站的内容
 54     #print html.status_code        # 请求的返回值
 55     RequestHeader = {
 56            ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36‘
 57     }
 58     html  =  requests.get(url,headers=RequestHeader)
 59     #print html.text
 60     return html.text
 61
 62
 63 def getVideoUrl(html):
 64     #re.S 是匹配换行符
 65     Parse   = re.compile(r‘(<div class="j-r-list-c">.*?</div>.*?</div>)‘,re.S)
 66     context = re.findall(Parse,html)
 67     Parse   = re.compile(r‘data-mp4="(.*?)"‘)
 68     for item in context:
 69         VideoUrl  = re.findall(Parse,item)
 70         if VideoUrl:
 71             Name_Parse = re.compile(r‘(<a href="/detail-.{8}.html">(.*?)</a>)‘,re.S);
 72             VideoName  = re.findall(Name_Parse,item)
 73             for Name,url in zip(VideoName,VideoUrl): #zip这个内置函数就是将List重新整合一下
 74                 Video_Data.append([Name,url])
 75
 76
 77 def begin_Thread():
 78     try:
 79         for i in range(10,12):
 80             url = ‘http://www.budejie.com/%d‘%i
 81             html = getHtmlData(url)
 82             getVideoUrl(html)
 83     except Exception as e:
 84         raise
 85     varl.set(‘一共%s个小视频,现在开始下载......‘%(len(Video_Data)/2))
 86     thread = threading.Thread(target= myThread)
 87     thread.start()
 88
 89
 90 def myThread():
 91     id = 1
 92     for Data in Video_Data:
 93         text.insert(END,str(id)+‘.‘+Data[0][1]+Data[1]+‘\n‘)
 94         urllib.urlretrieve(Data[1],‘%s.mp4‘%Data[0][1].decode(‘utf-8‘).encode(‘gbk‘))
 95         Video_Data.pop(0)
 96         id += 1
 97     varl.set(‘所有的视频都下载完成‘)
 98
 99
100
101 def main():
102     creatWnd()
103     root.mainloop()
104
105
106 if __name__ == ‘__main__‘:
107     main()
108
109
110     
时间: 2024-10-29 19:11:40

Python实现--【简易】视频爬虫的相关文章

下载大数据实战课程第一季Python基础和网络爬虫数据分析

python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到gui程序,从B/S到C/S,从图形技术到科学计算,软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有python的身影:python已经深入到程序开发的各个领域,并且会越来越多的人学习和使用. 大数据实战课程第一季Python基础和网络爬虫数据分析,刚刚入手,转一注册文件,视频的确不错,可以先下载看看:链接:http://pan.baidu

[Python学习] 简单网络爬虫抓取博客文章及思想介绍

        前面一直强调Python运用到网络爬虫方面非常有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简单介绍下Python是如何爬去网络数据的,文章知识非常简单,但是也分享给大家,就当简单入门吧!同时只分享知识,希望大家不要去做破坏网络的知识或侵犯别人的原创型文章.主要包括: 1.介绍爬取CSDN自己博客文章的简单思想及过程 2.实现Python源码爬取新浪韩寒博客的316篇文章 一.爬虫的简单思想      最近看刘兵的<Web数据挖掘>知道,在研

Python爬取视频指南

摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://www.cniao5.com/ 菜鸟窝上有很多教程视频,但是这些视频好像没有直接的下载地址,而且有些教程视频还是有期限的,那么问题就产生了我看的速度比较慢而且视频又很多,没等我看完视频就到期了怎么办?这时候写一个爬虫将这些教程视频下载下来就很好地解决了这个问题 当然,对于某些视频网站的VIP电影.视频

Python面试重点(爬虫篇)

Python面试重点(爬虫篇) 注意:只有必答题部分计算分值,补充题不计算分值. 第一部分 必答题 注意:第31题1分,其他题均每题3分. 了解哪些基于爬虫相关的模块? requests.urllib.lxml.bs4.selenium 常见的数据解析方式? re.lxml.bs4 列举在爬虫过程中遇到的哪些比较难的反爬机制? 参数加密.数据加密 简述如何抓取动态加载数据? 获取动态ip地址 向动态id发送请求 移动端数据如何抓取? 抓取过哪些类型的数据,量级多少? 了解哪些爬虫框架? scra

python下载pps视频

简单的python下载脚本 思路 视频播放地址提取 直接解析一下原网页的源文件,利用正则就可以得到所有视频的播放地址,下面的代码以微信公共平台python教程的播放地址为例. 视频链接提取 这里利用了飞驴视频下载API进行视频链接提取,按照API的格式填写相关参数就ok了 视频下载并保存 使用urllib.urlretrieve函数保存视频就可以了 源代码 源代码贴出来,大家相互学习一下.代码比较简单,是按照上面的思路一步步做的,这里就不详细解释了 ```python !/usr/bin/env

Python写的网络爬虫程序(很简单)

Python写的网络爬虫程序(很简单) 这是我的一位同学传给我的一个小的网页爬虫程序,觉得挺有意思的,和大家分享一下.不过有一点需要注意,要用python2.3,如果用python3.4会有些问题出现. python程序如下: import re,urllib strTxt="" x=1 ff=open("wangzhi.txt","r") for line in ff.readlines(): f=open(str(x)+".txt&

python搭建简易服务器实例参考

有关python搭建简易服务器的方法. 需求分析: 省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪, 每次打开都要缓上半天,甚至浏览器直接挂掉 采用python搭建一个最最简易的 web 服务 请求一个nick 就返回 对应的 报表数据 参数用GET方式传送 调研与实现: 园里没找到靠谱的,google了半天,最终还是成功了. 以下是源码,里面记录了 其中的 一些问题 复制代码 代码如下: #! /usr/bin/env python # -*- coding: utf-8 -

哪个python web开发视频最好?

?程序员说:Python web框架尤为重要!python的web框架实在是太多了,但它们也各有各的优势.那么,哪个python web开发视频最好?如果你还没找到,不妨看看这个. python课程web知识点:http://pan.baidu.com/s/1jIMdU2i Python流行的主要原因是代码的优雅,特别是简洁和可读性.当谈到Web开发的时候会想到是什么使Python成为越来越多的开发人员的核心语言?与PHP不同,它不是为web而设计的,并且Python中没有集成核心Web功能.

Python编写简易木马程序(转载乌云)

Python编写简易木马程序 light · 2015/01/26 10:07 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 +JEDI(python自动补全插件)来撸代码,安装配置JEDI插件可以参照这里: /tips/?id=4413 首先准备好我们需要的依赖库,python hook和pythoncom. 下载安装python hook 下载安装pythoncom模块:

Java Python Hadoop 教程视频

1.old boy Python周末培训班视频25周全 用淘宝APP或闲鱼网APP扫描下图二维码查看详情 ------------------------------------------------------------------------------------------------- 2.zhuanzhi播客大数据第三期,脱产班,一万多的培训费, 39天全套高清,代码,视频,文档,面试题,面试技巧. 用淘宝APP或闲鱼网APP扫描下图二维码查看详情 ---------------