环境


  python2.7 pycharm

  课题:Python爬取视频(桌面版)---爬虫,桌面程序应用
  优点:语法简洁,入门快,代码少,开发效率高,第三方库   1.图形用户界面---GUI
  2.爬虫,爬取视屏下载
  3.结合,展现在GUI   正则表达式:想要的东西 表达形式 模型
  匹配findall(正则表达式,源码)
  知识点:
  1.如何创建一个窗口
  2.如何进行填充 滚动条 点击按钮 文本框
  3.解决网站禁止爬虫---加上头部信息(浏览器),伪装浏览器进行访问
  4.打开网页获取源码 requests
  5.获取视频 名称
  6.下载并且展示

代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: benjaminYang
from Tkinter import *
from ScrolledText import ScrolledText #文本滚动条
import urllib,requests
import re
import threading #多线程处理与控制
#import time #
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" ) url_name=[] #url+name
a=1 #页数
def get():
global a #改变全局变量
hd={
'User - Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 62.0.3202.94Safari / 537.36'
}
url='http://www.budejie.com/video/'+str(a)
varl.set('已经获取第%s页的视屏'%(a))
html=requests.get(url,headers=hd).text #发送get请求,获取源码
# print html #网站全部源码
url_content=re.compile(r'(<div class="j-r-list-c">.*?</div>.*?</div>)',re.S) #编译,提高效率,匹配换行符
url_contents=re.findall(url_content,html)
# print url_contents #视屏的名称+视屏的url
for i in url_contents:
url_reg=r'data-mp4="(.*?)">'
url_items=re.findall(url_reg,i)
# print url_items
if url_items:#如果有视屏存在,我就匹配名字,如果是图片,我就跳过
name_reg=re.compile(r'<a href="/detail-.{8}?.html">(.*?)</a>',re.S)
name_items=re.findall(name_reg,i)
# print name_items #列表中的中文是可迭代对象都是Unicode格式
for i,k in zip(name_items,url_items): #zip函数 将两个可迭代对象一一对应
url_name.append([i,k])
print i,k
return url_name
id=1 #视屏个数
def write():
global id
while id<10:
url_name=get()#调用获取视屏+名字
for i in url_name: #windows只能识别gbk 先将Unicode解码,然后再编码成gbk
urllib.urlretrieve(i[1],'video\\%s.mp4'%(i[0]).decode('utf-8').encode('gbk'))#下载的方法urlretrieve
text.insert(END,str(id)+'.'+i[1]+'\n'+i[0]+'\n')
url_name.pop(0) #删除一个元素
id+=1
varl.set('Hi:视频链接和视频抓取完毕,over!。。') def start():
th=threading.Thread(target=write())#实例一条线程
th.start() root=Tk() #实例化一个变量
root.title('fuck下载真操蛋')
text= ScrolledText(root,font=('微软雅黑',10))
text.grid()#实现布局的一种方法
button=Button(root,text='开始爬取',font=('微软雅黑',10),command=start) #按钮绑定start函数
button.grid() #按钮
varl=StringVar()#通过tk方法绑定一个变量
label=Label(root,font=('微软雅黑',10),fg='red',textvariable=varl)
label.grid()
varl.set('熊猫已经准备......')
root.mainloop() #创建窗口指令

演示:

爬虫练习二:GUI+下载百思不得姐网站视频的更多相关文章

  1. 利用Selenium和Browsermob批量嗅探下载Bilibili网站视频

    Rerence: http://www.liuhao.me/2016/09/20/selenium_browsermob_sniff_bilibili_video/ 日常生活中,用电脑看视频是非常频繁 ...

  2. 爬虫Scrapy框架-2爬取网站视频详情

     爬取视频详情:http://www.id97.com/ 创建环境: movie.py 爬虫文件的设置: # -*- coding: utf-8 -*- import scrapy from movi ...

  3. python爬虫:爬取网站视频

    python爬取百思不得姐网站视频:http://www.budejie.com/video/ 新建一个py文件,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  4. python3爬虫(4)各种网站视频下载方法

    python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...

  5. python爬虫公众号所有信息,并批量下载公众号视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 数据分析实战 PS:如有需要Python学习资料的小伙伴可以加点击 ...

  6. 使用you-get下载视频网站视频或其他

    使用you-get下载视频网站视频或其他 文/玄魂 目录 使用you-get下载视频网站视频或其他 前言 1.1 下载.安装 依赖 exe安装 pip安装 Antigen安装 Git 克隆源码 Hom ...

  7. Python 爬虫实例(13) 下载 m3u8 格式视频

    Python  requests  下载  m3u8 格式    视频 最近爬取一个视频网站,遇到  m3u8 格式的视频需要下载. 抓包分析,视频文件是多个  ts 文件,什么是 ts文件,请去百度 ...

  8. You-Get,多网站视频下载工具,非常方便

    You-Get是一个非常优秀的网站视频下载工具.使用You-Get可以很轻松的下载到网络上的视频.图片及音乐. 按Win+R键打开运行,输入cmd,再输入命令 pip install you-get, ...

  9. Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频

    Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权 ...

随机推荐

  1. 3771: Triple

    3771: Triple 链接 题意 n个斧头,每个斧头的价值都不同(开始时没注意到),可以取1个,2个,3个斧头组成不同的价值,求每种价值有多少种组成方案(顺序不同算一种) 分析: 生成函数 + 容 ...

  2. 抽象类的作用之一:sdk 传递你需要的参数

    抽象类可以干什么?抽象类可以让别人必须做一件事情,比如实现一个方法. 那它有什么作用呢? 我开始也不知道啊,后来慢慢的知道了,在开发中,我知道了它是干什么的,怎么用的.比如你要写一个sdk给别人用.但 ...

  3. (1)strchr

    const char * strchr ( const char * str, int character ); char * strchr ( char * str, int character ) ...

  4. Xcode 代码提示功能失效

    前言: 以前好像很少碰到Xcode中代码提示出问题的情况,最近经常遇到这个问题.没有了Xcode的智能提示,发现我已完全不会写代码了. 本来想吐槽下万恶的baidu,鉴于百度前端时间的各种(贴吧.竞价 ...

  5. Python面试题之一:解密

    Python面试题之一: 说明:就是Python工程师面试题 一.字典转换与正则提取值 1:key与Value交换 a = {'a':1,'b':2} print({value:key for key ...

  6. 抽象类和虚方法、base关键字

    微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract ...

  7. (转) Unreal的HLSL交叉编译-UEAPI

    HLSL Cross Compiler This library compiles High Level Shading Language (HLSL) shader source code into ...

  8. OpenStack Heat 介绍

    Heat 是一个基于模板来编排复合云应用的服务. 它目前支持亚马逊的 CloudFormation 模板格式,也支持 Heat 自有的 Hot 模板格式.模板的使用简化了复杂基础设施,服务和应用的定义 ...

  9. HttpRuntime.Cache再学习

    摘抄: 可以看到:读缓存,其实是在调用Get方法,而写缓存则是在调用Insert方法的最简单的那个重载版本. 注意了:Add方法也可以将一个对象放入缓存,这个方法有7个参数,而Insert也有一个签名 ...

  10. Windows7下打开特定的端口

    往往我们发布到IIS的网站多了,80的端口不能满足的情况下,我们就会想到设定其它端口来使用.当然还可以通过改变host文件来实现,这里就不细说了.回到端口,在windows7系统下怎么实现呢?下面将带 ...