一个WXPython+采集的 Demo

2024-03-01 09:18
文章标签 采集 demo wxpython

本文主要是介绍一个WXPython+采集的 Demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# -*-coding:utf-8 -*-
# 勿喷,很早之前写着玩的
from __future__ import division
import wxversion,sys,os
wxversion.select('3.0-msw-unicode')
import wx,urllib,urllib2, base64,re,sys,os,time
reload(sys)
sys.setdefaultencoding('UTF-8')
encoding = "UTF-8"percent =0
#http://www.61ertong.com/plus/list.php?tid=10&TotalResult=1199	class ButtonFrame(wx.Frame):def __init__(self):wx.Frame.__init__(self, None, -1, 'Button Example',size=(600, 200),style =wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)  | wx.CLIP_CHILDREN | wx.NO_FULL_REPAINT_ON_RESIZE)panel = wx.Panel(self, -1)self.count = 0self.btn_down = wx.Button(panel, -1, u"下载", pos=(200, 115))self.btn_exit = wx.Button(panel, -1, u"退出", pos=(320, 115))     self.url_text=wx.TextCtrl(panel,-1,'http://www.61ertong.com/flash/gequ/cngequ/show/f_60545.html',size=(450,-1),pos=(110, 45))self.Bind(wx.EVT_BUTTON, self.OnClickButton, self.btn_down)self.processBar = wx.Gauge(panel, -1, 100, pos=(110, 80),size=(420, 15), style = wx.GA_PROGRESSBAR)self.processBar.SetBezelFace(3)self.processBar.SetShadowWidth(3)self.Label_info=wx.StaticText(panel,-1,u"61儿童网地址:",pos=(20, 50))self.Label_proce=wx.StaticText(panel,-1,u"进度:",pos=(65, 80))self.Label_Url=wx.StaticText(panel,-1,u"" ,pos=(20, 20))self.Label_Percent=wx.StaticText(panel,-1,u"0",pos=(530, 80))self.Label_Flag=wx.StaticText(panel,-1,u"%",pos=(550, 80))'''前面一个是关掉弹窗,后面一个是关掉程序'''self.Bind(wx.EVT_BUTTON, self.OnClose, self.btn_exit)  self.Bind(wx.EVT_CLOSE, self.OnCloseWindow,self.btn_down)def OnClose(self, event):ret = wx.MessageBox(u'您确定要退出本程序吗',  u'WxPython Info', wx.OK|wx.CANCEL)# dlg = wx.MessageDialog(self, 'Hello from Python and wxPython!',# 'A Message Box',# wx.OK | wx.ICON_INFORMATION|wx.YES_NO | wx.NO_DEFAULT# )# dlg.ShowModal()# dlg.Destroy()if ret == wx.OK:self.Destroy()@staticmethoddef urlcallback(a,b,c):global obj per = 100.0 * a * b / cpercent = int(per)obj.processBar.SetValue(percent)obj.Label_Percent.SetLabel(str(percent))def OnCloseWindow(self, event):self.Close()def OnClickButton(self, event):url = self.url_text.GetValue()self.processBar.SetValue(1)		if url != '' :try:#最近不伪造header头采集不到#request = urllib2.Request(url)headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}req = urllib2.Request(url=url,headers=headers)socket = urllib2.urlopen(req)html_content = socket.read()socket.close()except Exception ,ex:print exwx.MessageBox(u"没有抓取到远程文件",u'WxPython Warning',wx.OK|wx.CANCEL|wx.ICON_ERROR)return '''默认都是抓Swf文件'''re_swf = re.compile('swfurl\:"(.*?)"',re.S|re.U|re.I)re_title = re.compile('<h1><a href="(.*)">(.*)</a><\/h1>',re.S|re.U)swfs = re.findall(re_swf,html_content)file_object = open('thefile.txt','w')try:file_object.write(html_content)finally:file_object.close()titles = re.findall(re_title,html_content)swfurl=base64.decodestring(swfs[0])file_ext ='.swf''''swf是空的,那么就是flv'''if swfurl =='http://img.61gequ.com':re_swf = re.compile('flvurl\:"(.*?)"',re.S|re.U)swfs = re.findall(re_swf,html_content)swfurl=base64.decodestring(swfs[0])file_ext = '.flv'		'''获取远程文件大小'''opener  = urllib2.build_opener()  request = urllib2.Request(swfurl)  request.get_method = lambda: 'HEAD'		try:  response = opener.open(request)  response.read()except Exception, e:ret = wx.MessageBox(u'发生错误 %s'%e,  u'WxPython Info', wx.OK|wx.CANCEL|wx.ICON_ERROR)else:swflen = dict(response.headers).get('content-length', 0)self.Label_Url.SetLabel(swfurl+"  "+str(round(int(swflen)/1024/1024,2)) +"M")if os.path.exists("D:/py/videos") == False:#print u"在当前目录下建立文件夹videos成功"try:os.mkdir("D:/py/videos");except:wx.MessageBox(u'建立文件夹失败 ',  u'WxPython Info', wx.OK|wx.ICON_ERROR)return'''如果远程视频长度小于10,那肯定是出错了'''if int(swflen) >10:urllib.urlretrieve(swfurl, "D:/py/videos/"+titles[0][1].decode('utf-8')+file_ext,self.urlcallback)		if  int(os.path.getsize(r"D:/py/videos/"+titles[0][1].decode('utf-8')+file_ext)) !=int(swflen) :wx.MessageBox(u'好像下载失败了,视频长度过段',  u'WxPython Info', wx.OK|wx.ICON_ERROR)	else:return 	else:wx.MessageBox(u"没有抓取到远程文件",  u'WxPython Info', wx.OK|wx.ICON_ERROR)	else:wx.MessageBox(u'请输入下载地址',u'WxPython Warning',wx.OK|wx.CANCEL|wx.ICON_ERROR)returnif __name__ == '__main__':  app = wx.PySimpleApp()frame = ButtonFrame()obj = frameframe.Center()frame.Show()frame.SetTitle(u"61儿童网下载器")frame.MAXIMIZE_BOX =Falseapp.MainLoop()

这篇关于一个WXPython+采集的 Demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761942

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

linux 内核提权总结(demo+exp分析) -- 任意读写(四)

hijack_modprobe_path篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermod

linux 内核提权总结(demo+exp分析) -- 任意读写(三)

hijack_prctl篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   prctl函数: 用户态函数,可用于定制进程参数,非常适合和内核进行交互 用户态执行prctl函数后触发prctl系统

linux 内核提权总结(demo+exp分析) -- 任意读写(二)

hijack_vdso篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     vdso: 内核实现的一个动态库,存在于内核,然后映射到用户态空间,可由用户态直接调用 内核中的vdso如果被修改

linux 内核提权总结(demo+exp分析) -- 任意读写(一)

cred篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   每个线程在内核中都对应一个线程结构块thread_infothread_info中存在task_struct类型结构体 struct t

linux 内核提权总结(demo+exp分析) -- ROP(二)

ret2usr CR4篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   smep: smep是内核的一种保护措施, 使得内核不可执行用户态代码 内核通过CR4寄存器的第20位来控制smep,

linux 内核提权总结(demo+exp分析) -- ROP(一)

基础ROP篇(linux 5.0.21) 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   内核提权与用户态攻击的区别 攻击流程 用户态攻击: 执行 system("/bin/sh") 获得shel

实例demo理解面向接口思想

浅显的理解面向接口编程 Android开发的语言是java,至少目前是,所以理解面向接口的思想是有必要的。下面通过一个简单的例子来理解。具体的概括我也不知道怎么说。 例子: 现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的