爬虫练习二:GUI+下载百思不得姐网站视频
环境
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+下载百思不得姐网站视频的更多相关文章
- 利用Selenium和Browsermob批量嗅探下载Bilibili网站视频
Rerence: http://www.liuhao.me/2016/09/20/selenium_browsermob_sniff_bilibili_video/ 日常生活中,用电脑看视频是非常频繁 ...
- 爬虫Scrapy框架-2爬取网站视频详情
爬取视频详情:http://www.id97.com/ 创建环境: movie.py 爬虫文件的设置: # -*- coding: utf-8 -*- import scrapy from movi ...
- python爬虫:爬取网站视频
python爬取百思不得姐网站视频:http://www.budejie.com/video/ 新建一个py文件,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...
- python3爬虫(4)各种网站视频下载方法
python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...
- python爬虫公众号所有信息,并批量下载公众号视频
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 数据分析实战 PS:如有需要Python学习资料的小伙伴可以加点击 ...
- 使用you-get下载视频网站视频或其他
使用you-get下载视频网站视频或其他 文/玄魂 目录 使用you-get下载视频网站视频或其他 前言 1.1 下载.安装 依赖 exe安装 pip安装 Antigen安装 Git 克隆源码 Hom ...
- Python 爬虫实例(13) 下载 m3u8 格式视频
Python requests 下载 m3u8 格式 视频 最近爬取一个视频网站,遇到 m3u8 格式的视频需要下载. 抓包分析,视频文件是多个 ts 文件,什么是 ts文件,请去百度 ...
- You-Get,多网站视频下载工具,非常方便
You-Get是一个非常优秀的网站视频下载工具.使用You-Get可以很轻松的下载到网络上的视频.图片及音乐. 按Win+R键打开运行,输入cmd,再输入命令 pip install you-get, ...
- Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频
Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权 ...
随机推荐
- 容器技术Docker
什么是decker容器 简单理解就是将代码和部署环境一起打包的一个容器
- qq登录面板
- AS3项目基础框架搭建分享robotlegs2 + starling1.3 + feathers1.1
这个框架和我之前使用robotlegs1版本的大体相同,今天要写一个新的聊天软件就把之前的框架升级到了2.0并且把代码整理了一下. 使用适配器模式使得starling的DisplayObject和fl ...
- U盘的容量变小了怎么办?
之前买了个U盘,后来给朋友装系统弄成U盘启动盘了,就发现U盘容量变少了几百兆,原来是因为做U盘启动盘的时候,U盘启动盘制作软件都是把写入U盘的PE文件隐藏了,防止用户不小心删除文件. 所以说这些空间应 ...
- phpStorm9.0 +xampp+chrome php调试环境配置!
不多说,直接上step by step: 1.xampp配置 看看我的XAMPP版本: 修改配置文件,该打开打开,该加上加上,结果如下(当前需要重新启动apache,配置才会生效): [XDebug] ...
- python2.7写入文件时指定编码为utf-8
python3.0可以这样写 f = open('ufile.log', 'w', 'utf-8') 但在python2.7中open()没有编码参数,如上那样写会报错,可以使用如下模块 impo ...
- python 学习分享-实战篇高级的ftp
#server代码 import socketserver,os,hashlib Base_paht = os.path.dirname(os.path.dirname(os.path.abspath ...
- 洛谷P1331海战
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线. 不幸的是因为种种原因,国防海军部仅有很少的 ...
- SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13)
SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13) 我可以真见识了 SELinux 的利害了, 这个问题让我找了好长时 ...
- P4305 [JLOI2011]不重复数字
题目描述 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4. ...
