本爬虫是对指定网页链接爬取或者对关键字的百度搜索进行图片和视频的爬取 网页链接爬取部分较为简单(需要输入视频或图片的源地址) 本爬虫分为2各部分:
1是对于图片或视频爬取的爬虫程序。技术路线:requests+re 2是爬虫客户端界面。技术路线:graphics (后附代码)爬虫主窗口 爬虫部分 get_one_page函数是最底层的调用requests库的get命令获取一个可操作的response对象,payload为后面操作可添加的参数。 def get_one_page(url,payload=None): try: response = requests.get(url,headers=head,proxies=None,timeout=3,params=payload) response.raise_for_status() return response except: return "产生异常"GetText函数用于获取网页文本信息用于后续正则表达式的解析
def GetText(url,payload=None): r=get_one_page(url,payload) r.encodeing=r.apparent_encoding #启动备用编码 return r.textGetIamge函数功能是下载图片,参数root为保存路径,其中用了OS库创建文件目录,以二进制方式写入图片信息,其中Win.CrawlerTips为调用窗口部分显示正在爬取什么内容的函数。
def GetIamge(root,url): root_img=root+"//图片//" path=root_img+url.split("/")[-1] print(path) if not os.path.exists(root_img): #判断目录是否存在 os.makedirs(root_img)#创建目录 if not os.path.exists(path): r=get_one_page(url) Win.CrawlerTips(url.split("/")[-1])#在窗口中打印正在爬取的信息 with open(path,"wb") as f: f.write(r.content) #写入图片 f.close() Win.Undraw_CrawlerTips()#在窗口中擦除正在爬取的信息 return "爬取图片成功" else: return "图片已存在"GetVideo函数功能是下载视频,注释部分为另一种下载方法,测试也可用,本次例子用的是和图片一样的二进制方式下载。
def GetVideo(root,url): root_vid=root+"//视频//" path=root_vid+url.split("/")[-1] print(path) if not os.path.exists(root_vid): #判断目录是否存在 os.makedirs(root_vid)#创建目录 if not os.path.exists(path): url=url.replace("\\","")#删除连接中的转义反斜杠 ''' r=requests.get(url,stream=True,headers=head,timeout=3)#通过流的方式来请求MP4 with open(path,"wb") as f: for chunk in r.iter_content(chunk_size=1024 * 1024): if chunk: f.write(chunk)#写入视频 f.close() return "爬取视频成功" ''' r=get_one_page(url) Win.CrawlerTips(url.split("/")[-1])#在窗口中打印正在爬取的信息 with open(path,"wb") as f: f.write(r.content) #写入图片 f.close() Win.Undraw_CrawlerTips()#在窗口中擦除正在爬取的信息 return "爬取视频成功" else: return "视频已存在"HtmlHanlder函数是对网页信息进行提取,参数img_or_vid表示是爬取图片还是视频,depth表示爬取深度。运用re库,思路是向百度提交带关键词的链接,然后分析搜索内容进行下载。其中视频爬取分为先向百度提交带关键词的链接,然后分析搜索内容提取各个视频网页链接,再对该视频网页链接进去分析,以爬取.mp4后缀的视频。
def HtmlHanlder(root,url,img_or_vid,depth): i,j=0,0#计数器 img_str=re.compile(r'"https*://\S+.[jpg|png|jpeg|gif]"') vid_html=re.compile(r'<!-- https*\S+ -->') vid_str=re.compile(r'"https\S+?.mp4\?') if(img_or_vid=="img"): while (i<=depth): text=GetText(url,{"pn":j*10}) for img in img_str.findall(text): #爬取图片 img=img.strip('"')#去除两边的“” try: GetIamge(root,img)#下载图片 i+=1 except: pass if(i>=depth): break #检索数量大于要求值则退出 j+=1#没有达到当前深度,对网页进行翻页 elif(img_or_vid=="vid"): while (i<=depth): text=GetText(url,{"pn":j*10}) for vid_ht in vid_html.findall(text):#先寻找视频网址 vid_ht=vid_ht. lstrip('<!-- ')#去除左边的符号 vid_ht=vid_ht. rstrip(' -->')#去除右边的符号 try: html=GetText(vid_ht)#获取视频网址 except: pass for vid in vid_str.findall(html):#再在网址中爬取视频 vid=vid.strip('"')#去除两边的“” vid=vid.strip('?')#去除两边的“” try: GetVideo(root,vid)#下载视频 i+=1 except: pass break#同一个网站视频只检索一次 if(i>=depth): break#检索数量大于要求值则退出 j+=1#没有达到当前深度,对网页进行翻页Crawler_judge函数为与主窗口的交互函数,用于分析窗口点击和输入框的信息,进行对应爬取。 参数kerword_or_url为链接或关键字的提交,mode表示为是链接爬取还是关键之爬取。
def RootCon(root): if not os.path.exists(root): #判断目录是否存在 os.makedirs(root)#创建目录 return root def Crawler_judge(kerword_or_url,mode,depth): #判断窗口点击选项 #页数=(pn%10)+1 img="https://image.baidu.com/search/index?tn=baiduimage&word=" #百度图片搜索 vid="https://www.baidu.com/sf/vsearch?pd=video&tn=vsearch&wd=" #百度视频搜索 if mode=="net_crawler": root="F://Text_Python//Web_Crawler//"+kerword_or_url.strip('"').split("/")[-1] RootCon(root)#创建路径 if (kerword_or_url.split(".")[-1] in Image): #判断是否为图片网址 GetIamge(root,kerword_or_url) elif(kerword_or_url.split(".")[-1] in Video):#判断是否为视频网址 GetVideo(root,kerword_or_url) else: return "网址错误" elif mode=="buffer_crawler": root="F://Text_Python//Web_Crawler//"+kerword_or_url.strip('"') RootCon(root)#创建路径 url=img+kerword_or_url #先爬取图片 HtmlHanlder(root,url,"img",depth) url=vid+kerword_or_url #爬取视频 HtmlHanlder(root,url,"vid",depth) file["net_file"],file["buffer_file"]=root,root return "爬取完成" 窗口部分 创建一个标题为“网络爬虫v1.0”,800*600的窗口 win=GraphWin("网络爬虫v1.0",800,600)上图链接输入框与关键字输入框的创建
inputbox_1=Entry(Point(200,275),30) #网址输入框,长度30 inputbox_1.draw(win) inputbox_2=Entry(Point(200,425),30) #内容输入框,长度30 inputbox_2.draw(win)Crawker_win函数为各种信息,点击框的绘制
def Crawker_win():#窗口显示界面 x_i=0#选项框列表位置记录 #程序名称信息 title=Text(Point(400,100),"网络爬虫V1.0") title.setSize(23)#标题大小 title.setTextColor(color_rgb(0,128,0))#设置标题字体为深绿色 title.draw(win) #提示信息 Tips=Text(Point(400,150),"说明:本爬虫用于对指定网页或关键字的图片和视频爬取") Tips.setSize(15)#提示大小 Tips.setTextColor(color_rgb(50,128,200))#设置标题字体为暗蓝色 Tips.draw(win) #自定义网址爬取 input_tit_1=Text(Point(120,250),"需要爬取网址:")#第一个小标题 input_tit_1.setSize(12)#标题大小 #input_tit_1.setStyle("italic")#设置字体 input_tit_1.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 input_tit_1.draw(win) for i in range(2): Optional_box_1=Rectangle(Point(Optional_x_y[x_i][0],Optional_x_y[x_i][1]),\ Point(Optional_x_y[x_i][2],Optional_x_y[x_i][3]))#设置选项框对象 Optional_box_1.setFill(color_rgb(220,220,220))#选项框填充为亮灰色 Optional_box_1.setOutline(color_rgb(244,164,96))#边框为沙棕色 Optional_box_1.draw(win)#在当前窗口画出可选框 if i==0: net_title=Text(Point(270+200*(i+1),270),"Crawler!")#可选框内容 else: net_title=Text(Point(270+200*(i+1),270),"Open Outputfile")#第一个可选框内容 net_title.setSize(12)#标题大小 net_title.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 net_title.draw(win)#将选项框内容画在win窗口中 x_i+=1#每画完一个选项框,就递增 #自定义内容爬取 input_tit_2=Text(Point(120,400),"需要爬取内容:")#第二个小标题 input_tit_2.setSize(12)#标题大小 input_tit_2.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 input_tit_2.draw(win)#画输入提示内容 for i in range(2): Optional_box_1=Rectangle(Point(Optional_x_y[x_i][0],Optional_x_y[x_i][1]),\ Point(Optional_x_y[x_i][2],Optional_x_y[x_i][3]))#设置选项框对象 Optional_box_1.setFill(color_rgb(220,220,220))#选项框填充为亮灰色 Optional_box_1.setOutline(color_rgb(244,164,96))#边框为沙棕色 Optional_box_1.draw(win)#在当前窗口画出可选框 if i==0: net_title=Text(Point(270+200*(i+1),420),"Crawler!")#第一个可选框内容 else: net_title=Text(Point(270+200*(i+1),420),"Open Outputfile")#第一个可选框内容 net_title.setSize(12)#标题大小 net_title.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 net_title.draw(win)#将选项框内容画在win窗口中 x_i+=1#每画完一个选项框,就递增 return winMouse_handle函数是对鼠标点击信息进行处理,获取点击的区域
def Mouse_handle(): mouse=win.getMouse()#获取鼠标点击事件 mouse_x=mouse.getX()#获取鼠标点击X坐标 mouse_y=mouse.getY()#获取鼠标点击Y坐标 if( Optional_x_y[0][0]<=mouse_x<=Optional_x_y[0][2] \ and Optional_x_y[0][1]<=mouse_y<=Optional_x_y[0][3]): return "net_crawler" #第一个框 elif( Optional_x_y[1][0]<=mouse_x<=Optional_x_y[1][2] \ and Optional_x_y[1][1]<=mouse_y<=Optional_x_y[1][3]): return "net_file"#第二个框 elif( Optional_x_y[2][0]<=mouse_x<=Optional_x_y[2][2] \ and Optional_x_y[2][1]<=mouse_y<=Optional_x_y[2][3]): return "buffer_crawler"#第三个框 elif( Optional_x_y[3][0]<=mouse_x<=Optional_x_y[3][2] \ and Optional_x_y[3][1]<=mouse_y<=Optional_x_y[3][3]): return "buffer_file"#第四个框 else: return 0GetMessage为获取输入框的信息,参数sw_flag为获取哪一个框的参数
def GetMessage(sw_flag): #获取输入框的信息 if sw_flag=="net_crawler": return inputbox_1.getText()#返回网址 elif sw_flag=="buffer_crawler": return inputbox_2.getText()#返回内容 else: return 0MessageWin函数为弹出提示信息窗口(如上图)
def MessageWin(sw_flag): meswin=GraphWin(sw_flag,200,200)#创建弹出消息 message_main=Text(Point(100,70),(sw_flag+" OK!"))#显示完成 message_main.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 message_rec=Rectangle(Point(80,90),Point(120,110)) message_rec.setFill(color_rgb(220,220,220))#选项框填充为亮灰色 message_rec.setOutline(color_rgb(244,164,96))#边框为沙棕色 message_text=Text(Point(100,100),"OK!")#显示完成 message_text.setSize(12)#标题大小 message_text.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 message_main.draw(meswin)#画出标题 message_rec.draw(meswin)#画出确认框框 message_text.draw(meswin)#画出“确认” mouse=meswin.getMouse() mouse_x=mouse.getX()#获取鼠标点击X坐标 if not(mouse_x==0): meswin.close()CrawlerTips与Undraw_CrawlerTips为打印信息和擦除信息
def CrawlerTips(name):#打印消息 global crawlertips if(name.find(".")==-1): tips="爬取结束!" else: tips="正在爬取:"+name+"..." crawlertips=Text(Point(400,500),tips) crawlertips.setSize(14)#标题大小 crawlertips.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 crawlertips.draw(win)#画爬取信息 def Undraw_CrawlerTips():#擦除消息 crawlertips.undraw()OpenFile函数打开文件夹功能,其中road变量调用了为爬虫部分创建的文件目录,故实际不需要对name进行判断
#操作文件窗口 def OpenFile(name): road="" if(name=="net_file"): road=Web_Crawler.file["net_file"] elif(name=="buffer_file"):road=Web_Crawler.file["buffer_file"] road=road.replace("//","\\") os.system("start explorer "+road) #road为打开的路径初学python,水平有限,如遇bug请见谅。 代码↓↓↓ #main.py
import Win #窗口文件 import Web_Crawler #爬虫文件 win=Win.Crawker_win() #画出爬虫主窗口界面 while True: chars=Win.Mouse_handle() #获得鼠标点击内容 if(chars=="net_crawler"or chars=="buffer_crawler"): #获取成功 keyword_or_url=Win.GetMessage(chars) #获取输入框信息 if(not keyword_or_url==0): #获取成功 result=Web_Crawler.Crawler_judge(keyword_or_url,mode=chars,depth=1) #爬取内容 Win.MessageWin(chars) #提示爬取成功窗口 print(result) #打印爬取内容 elif(chars=="net_file"): Win.OpenFile("net_file")#打开抓取网址文件夹 elif(chars=="buffer_file"): Win.OpenFile("buffer_file")#打开抓取关键字文件夹 chars=None#擦除这次操作的信息#Web_Crawler.py
import requests import os import re import Win Image={"jpg","png","jpeg","gif"}#图片格式集 Video={"mp4","flv","mkv","avi","rmvb","mov","rm"}#视频格式集 name=[]#图片视频名称集 file={"net_file":"","buffer_file":""} pxs={"http":"http://user:pass@10.10.10.1:1234",#代理服务器 "https":"https://111.13.7.122:80"} head={"user-agent":"Chrome/10"} #请求头 def RootCon(root): if not os.path.exists(root): #判断目录是否存在 os.makedirs(root)#创建目录 return root def Crawler_judge(kerword_or_url,mode,depth): #判断窗口点击选项 #页数=(pn%10)+1 img="https://image.baidu.com/search/index?tn=baiduimage&word=" #百度图片搜索 vid="https://www.baidu.com/sf/vsearch?pd=video&tn=vsearch&wd=" #百度视频搜索 if mode=="net_crawler": root="F://Text_Python//Web_Crawler//"+kerword_or_url.strip('"').split("/")[-1] RootCon(root)#创建路径 if (kerword_or_url.split(".")[-1] in Image): #判断是否为图片网址 GetIamge(root,kerword_or_url) elif(kerword_or_url.split(".")[-1] in Video):#判断是否为视频网址 GetVideo(root,kerword_or_url) else: return "网址错误" elif mode=="buffer_crawler": root="F://Text_Python//Web_Crawler//"+kerword_or_url.strip('"') RootCon(root)#创建路径 url=img+kerword_or_url #先爬取图片 HtmlHanlder(root,url,"img",depth) url=vid+kerword_or_url #爬取视频 HtmlHanlder(root,url,"vid",depth) file["net_file"],file["buffer_file"]=root,root return "爬取完成" def GetIamge(root,url): root_img=root+"//图片//" path=root_img+url.split("/")[-1] print(path) if not os.path.exists(root_img): #判断目录是否存在 os.makedirs(root_img)#创建目录 if not os.path.exists(path): r=get_one_page(url) Win.CrawlerTips(url.split("/")[-1])#在窗口中打印正在爬取的信息 with open(path,"wb") as f: f.write(r.content) #写入图片 f.close() Win.Undraw_CrawlerTips()#在窗口中擦除正在爬取的信息 return "爬取图片成功" else: return "图片已存在" def GetVideo(root,url): root_vid=root+"//视频//" path=root_vid+url.split("/")[-1] print(path) if not os.path.exists(root_vid): #判断目录是否存在 os.makedirs(root_vid)#创建目录 if not os.path.exists(path): url=url.replace("\\","")#删除连接中的转义反斜杠 ''' r=requests.get(url,stream=True,headers=head,timeout=3)#通过流的方式来请求MP4 with open(path,"wb") as f: for chunk in r.iter_content(chunk_size=1024 * 1024): if chunk: f.write(chunk)#写入视频 f.close() return "爬取视频成功" ''' r=get_one_page(url) Win.CrawlerTips(url.split("/")[-1])#在窗口中打印正在爬取的信息 with open(path,"wb") as f: f.write(r.content) #写入图片 f.close() Win.Undraw_CrawlerTips()#在窗口中擦除正在爬取的信息 return "爬取视频成功" else: return "视频已存在" def GetText(url,payload=None): r=get_one_page(url,payload) r.encodeing=r.apparent_encoding #启动备用编码 return r.text def get_one_page(url,payload=None): try: response = requests.get(url,headers=head,proxies=None,timeout=3,params=payload) response.raise_for_status() return response except: return "产生异常" def HtmlHanlder(root,url,img_or_vid,depth): i,j=0,0#计数器 img_str=re.compile(r'"https*://\S+.[jpg|png|jpeg|gif]"') vid_html=re.compile(r'<!-- https*\S+ -->') vid_str=re.compile(r'"https\S+?.mp4\?') if(img_or_vid=="img"): while (i<=depth): text=GetText(url,{"pn":j*10}) for img in img_str.findall(text): #爬取图片 img=img.strip('"')#去除两边的“” try: GetIamge(root,img)#下载图片 i+=1 except: pass if(i>=depth): break #检索数量大于要求值则退出 j+=1#没有达到当前深度,对网页进行翻页 elif(img_or_vid=="vid"): while (i<=depth): text=GetText(url,{"pn":j*10}) for vid_ht in vid_html.findall(text):#先寻找视频网址 vid_ht=vid_ht. lstrip('<!-- ')#去除左边的符号 vid_ht=vid_ht. rstrip(' -->')#去除右边的符号 try: html=GetText(vid_ht)#获取视频网址 except: pass for vid in vid_str.findall(html):#再在网址中爬取视频 vid=vid.strip('"')#去除两边的“” vid=vid.strip('?')#去除两边的“” try: GetVideo(root,vid)#下载视频 i+=1 except: pass break#同一个网站视频只检索一次 if(i>=depth): break#检索数量大于要求值则退出 j+=1#没有达到当前深度,对网页进行翻页 def main(): kerword_or_url="中国" Crawler_judge(kerword_or_url,"buffer_crawler",1) #GetVideo("F://Text_Python//Web_Crawler//中国","http:\/\/vd3.bdstatic.com\/mda-jifqe2vgidr73vba\/mda-jifqe2vgidr73vba.mp4") if __name__=="__main__": main()#Win.py
from graphics import * import os import Web_Crawler import time # x1 y1 x2 y2 x3 y3 x4 y4 x3 y3 x4 y4 x3 y3 x4 y4 Optional_x_y=[[400,250,530,290],[600,250,730,290],[400,400,530,440],[600,400,730,440]] #创建800*600窗口,默认左上角为原点 crawlertips=Text(Point(300,500),"")#显示爬取状态全局变量 win=GraphWin("网络爬虫v1.0",800,600) #win.setBackground(color_rgb(0,191,255))#设置背景为天蓝色 inputbox_1=Entry(Point(200,275),30) #网址输入框,长度30 inputbox_1.draw(win) inputbox_2=Entry(Point(200,425),30) #内容输入框,长度30 inputbox_2.draw(win) def Crawker_win():#窗口显示界面 x_i=0#选项框列表位置记录 #程序名称信息 title=Text(Point(400,100),"网络爬虫V1.0") title.setSize(23)#标题大小 title.setTextColor(color_rgb(0,128,0))#设置标题字体为深绿色 title.draw(win) #提示信息 Tips=Text(Point(400,150),"说明:本爬虫用于对指定网页或关键字的图片和视频爬取") Tips.setSize(15)#提示大小 Tips.setTextColor(color_rgb(50,128,200))#设置标题字体为暗蓝色 Tips.draw(win) #自定义网址爬取 input_tit_1=Text(Point(120,250),"需要爬取网址:")#第一个小标题 input_tit_1.setSize(12)#标题大小 #input_tit_1.setStyle("italic")#设置字体 input_tit_1.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 input_tit_1.draw(win) for i in range(2): Optional_box_1=Rectangle(Point(Optional_x_y[x_i][0],Optional_x_y[x_i][1]),\ Point(Optional_x_y[x_i][2],Optional_x_y[x_i][3]))#设置选项框对象 Optional_box_1.setFill(color_rgb(220,220,220))#选项框填充为亮灰色 Optional_box_1.setOutline(color_rgb(244,164,96))#边框为沙棕色 Optional_box_1.draw(win)#在当前窗口画出可选框 if i==0: net_title=Text(Point(270+200*(i+1),270),"Crawler!")#可选框内容 else: net_title=Text(Point(270+200*(i+1),270),"Open Outputfile")#第一个可选框内容 net_title.setSize(12)#标题大小 net_title.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 net_title.draw(win)#将选项框内容画在win窗口中 x_i+=1#每画完一个选项框,就递增 #自定义内容爬取 input_tit_2=Text(Point(120,400),"需要爬取内容:")#第二个小标题 input_tit_2.setSize(12)#标题大小 input_tit_2.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 input_tit_2.draw(win)#画输入提示内容 for i in range(2): Optional_box_1=Rectangle(Point(Optional_x_y[x_i][0],Optional_x_y[x_i][1]),\ Point(Optional_x_y[x_i][2],Optional_x_y[x_i][3]))#设置选项框对象 Optional_box_1.setFill(color_rgb(220,220,220))#选项框填充为亮灰色 Optional_box_1.setOutline(color_rgb(244,164,96))#边框为沙棕色 Optional_box_1.draw(win)#在当前窗口画出可选框 if i==0: net_title=Text(Point(270+200*(i+1),420),"Crawler!")#第一个可选框内容 else: net_title=Text(Point(270+200*(i+1),420),"Open Outputfile")#第一个可选框内容 net_title.setSize(12)#标题大小 net_title.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 net_title.draw(win)#将选项框内容画在win窗口中 x_i+=1#每画完一个选项框,就递增 return win def CrawlerTips(name):#打印消息 global crawlertips if(name.find(".")==-1): tips="爬取结束!" else: tips="正在爬取:"+name+"..." crawlertips=Text(Point(400,500),tips) crawlertips.setSize(14)#标题大小 crawlertips.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 crawlertips.draw(win)#画爬取信息 def Undraw_CrawlerTips():#擦除消息 crawlertips.undraw() def Mouse_handle(): mouse=win.getMouse()#获取鼠标点击事件 mouse_x=mouse.getX()#获取鼠标点击X坐标 mouse_y=mouse.getY()#获取鼠标点击Y坐标 if( Optional_x_y[0][0]<=mouse_x<=Optional_x_y[0][2] \ and Optional_x_y[0][1]<=mouse_y<=Optional_x_y[0][3]): return "net_crawler" #第一个框 elif( Optional_x_y[1][0]<=mouse_x<=Optional_x_y[1][2] \ and Optional_x_y[1][1]<=mouse_y<=Optional_x_y[1][3]): return "net_file"#第二个框 elif( Optional_x_y[2][0]<=mouse_x<=Optional_x_y[2][2] \ and Optional_x_y[2][1]<=mouse_y<=Optional_x_y[2][3]): return "buffer_crawler"#第三个框 elif( Optional_x_y[3][0]<=mouse_x<=Optional_x_y[3][2] \ and Optional_x_y[3][1]<=mouse_y<=Optional_x_y[3][3]): return "buffer_file"#第四个框 else: return 0 def GetMessage(sw_flag): #获取输入框的信息 if sw_flag=="net_crawler": return inputbox_1.getText()#返回网址 elif sw_flag=="buffer_crawler": return inputbox_2.getText()#返回内容 else: return 0 def MessageWin(sw_flag): meswin=GraphWin(sw_flag,200,200)#创建弹出消息 message_main=Text(Point(100,70),(sw_flag+" OK!"))#显示完成 message_main.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 message_rec=Rectangle(Point(80,90),Point(120,110)) message_rec.setFill(color_rgb(220,220,220))#选项框填充为亮灰色 message_rec.setOutline(color_rgb(244,164,96))#边框为沙棕色 message_text=Text(Point(100,100),"OK!")#显示完成 message_text.setSize(12)#标题大小 message_text.setTextColor(color_rgb(0,191,255))#设置标题字体为深天蓝 message_main.draw(meswin)#画出标题 message_rec.draw(meswin)#画出确认框框 message_text.draw(meswin)#画出“确认” mouse=meswin.getMouse() mouse_x=mouse.getX()#获取鼠标点击X坐标 if not(mouse_x==0): meswin.close() #操作文件窗口 def OpenFile(name): road="" if(name=="net_file"): road=Web_Crawler.file["net_file"] elif(name=="buffer_file"):road=Web_Crawler.file["buffer_file"] road=road.replace("//","1") road=road.replace("1","\\") print(road) os.system("start explorer "+road) #road为打开的路径 if __name__=="__main__": Crawker_win() while True: chars=Mouse_handle() #获得鼠标点击内容 if(not chars==0): #获取成功 for i in range(1,20): if not i==0: Undraw_CrawlerTips() if(i%10==0): name="爬取完成" else: name=str(i)+"231546231.jpg" CrawlerTips(name) time.sleep(0.1) OpenFile("net_file") MessageWin(chars) #提示爬取成功窗口