环境


  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. 5 Post实现django表单

    本节大纲 1.article-detail 评论页面的准备工作 (1)model层创建评论模型 class Comment(models.Model): """创建评论模 ...

  2. split array

    public boolean splitArray(int[] nums) { return dividSameSumGroup(0,nums, 0,0); } public boolean divi ...

  3. iOS-QQ好友列表实现

    0.QQ好友列表实现 0.首先说说实现思路 自定义UITableView,每一个分组都是一个UITableViewHeaderFooterView,然后自定义cell,这里分组的实现主要是自定义UIT ...

  4. jmeter之录制控制器与代理的使用

    1.       先启动jmeter,在测试计划中添加线程组 2.       选中线程组右键添加,在配置元件中点击HTTP请求默认值 3.       选中线程组右键添加,在逻辑控制器中点击录制控制 ...

  5. shell之echo and printf

    #!/bin/sh _________echo___________#read name #echo "$name It is a test" #read命令从标准的输入中读取一行 ...

  6. 常用模块(sys)

    import sys# sys.argv() # 命令参数List,第一个元素是程序本身路径,如:python test.py run db# sys.exit('shh') # 退出程序,正常退出时 ...

  7. PHP页面跳转总结

    一.使用php内置函数:header()函数 <?php$url='./test.php'; header("Location:$url"); ?> 注意Locatio ...

  8. 以太访solidity常用的函数有哪些

    以太坊:什么是ERC20标准? 不以规矩,不能成方圆 许多人应该都听过 代码即法律(Code Is Law),因为程序写完了,无论执行多少次都会得到同样的结果,除非有外界因素的干扰.在多人协作的过程中 ...

  9. 关于 vee-validate直接引用的方法

    转载于:https://blog.csdn.net/hy111/article/details/79046500?%3E 由于当前项目使用的是基于jQuery的前端结构,尝试在新增需求中使用VUE2, ...

  10. Codeforces Round #328(Div2)

    CodeForces 592A 题意:在8*8棋盘里,有黑白棋,F1选手(W棋往上-->最后至目标点:第1行)先走,F2选手(B棋往下-->最后至目标点:第8行)其次.棋子数不一定相等,F ...