# _*_ coding:utf-8 _*_
from Tkinter import *
from ScrolledText import ScrolledText
import urllib
#import requests
import urllib2
#import pygame
import re
import threading
import time url_name=[]#放置地址 名称
a=1#代表页数
def get():
global a#改变全局变量
hd={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
url='http://www.budejie.com/video/'+str(a)
varl.set('已经获取到第%s的视频'%a)
opener=urllib2.build_opener()
request=urllib2.Request(url,None,hd)
result=opener.open(request).read()
url_content=re.compile(r'(<div class="j-r-list-c">.*?</div>.*?</div>)',re.S)#re.S匹配换行符
url_contents=re.findall(url_content,result)
# for iterm in url_contents:
# print iterm
url_reg = r'data-mp4="(.*?)">'
for iterm in url_contents:
url_items=re.findall(url_reg,iterm)
#print url_items
if url_items:#如果有视频存在,就匹配名字,如果是其他格式,则跳过
name_reg=re.compile(r'<a .*?>(.*?)</a>',re.S)
name_items=re.findall(name_reg,iterm)
#print name_items
for name,url in zip(name_items,url_items):
url_name.append([name,url])
print name,url
return url_name
id=1#视频个数
def write():
global id
while id<10:
url_name=get()#获取视频和名字
for iterm in url_name:
urllib.urlretrieve(iterm[1],'%s.mp4' % (iterm[0].decode('utf-8').encode('gbk')))#下载
text.insert(END,str(id)+'.'+iterm[1]+'\n'+iterm[0]+'\n')
url_name.pop(0)#删除第一个元素
id+=1
varl.set('抓取完成')
def start():
th=threading.Thread(target=write)
th.start()#运行线程 root=Tk()
root.title=('视频下载')
text=ScrolledText(root,font=('微软雅黑',10))
text.grid()#实现布局方法
button=Button(root,text='开始爬取',font=('微软雅黑',10),command=start)
button.grid()
varl=StringVar()#通过tk方法绑定一个变量 label=Label(root,font=('微软雅黑',10),fg='red',textvariable=varl)
varl.set('熊猫已准备....')
label.grid()
root.mainloop()

最新文章

  1. explicit抑制隐型转换
  2. 【MySQL学习笔记】MySQL权限表
  3. JAVA多线程经典范列:生产者与消费者
  4. 802.11 wireless 五
  5. 【Mood-11】值得学习的国内外Android开发者信息
  6. Quartz-2D绘图之概览
  7. PHP __autoload函数知识点
  8. 在Linux手动把文件转码的方法,防止乱码出现
  9. 制作与使用静态链接库(.lib)文件
  10. session的简单使用
  11. oracle迁移mysql数据库注意(转)
  12. oracle 10g操作和维护手册
  13. vim代码粘贴缩进混乱的问题[Linux]
  14. 201521145048《Java程序设计》第11周学习总结
  15. vue.js中的全局组件和局部组件
  16. Android 常驻广播和非常驻广播
  17. Galaxy2D Game Engine 4.2 开发版发布
  18. 第9章 Linux进程和信号超详细分析
  19. vim编辑
  20. RxSwift学习笔记7:buffer/window/map/flatMap/flatMapLatest/flatMapFirst/concatMap/scan/groupBy

热门文章

  1. Java基础1-反射篇
  2. 怎么将txt文件转化为html格式的文件?--极为丑陋的方式
  3. Chrome 编译错误汇总
  4. 很轻很强大:轻量级桌面环境比较(转自linuxeden)
  5. iOS获取设备卸载后不变的UUID
  6. Spring cloud子项目
  7. REST技术第三步 @BeanParam的使用
  8. Is &quot;UNION ALL&quot; Always Better Than &quot;UNION&quot;? Watch Out!
  9. 转:python常用运维脚本实例
  10. Linux minilogd占用内存过高及开机启动项修改