|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 python黑帽 于 2016-7-21 21:02 编辑
用tk做了个爬图片的爬虫,本来是下载一张就显示一张图片的链接,但是现在点击开始下载后程序就会无响应,然后等下载完了才把信息一下都显示出来
,进过debug发现是下载函数那里有问题,但是不知道是什么问题,反正没有那句的话显示其他信息就是同步的,贴上代码让各位大神看看- import urllib.request
- import re
- import os
- import urllib.parse
- import requests
- from tkinter import *
- os.mkdir('E:/search_picture/')
- root=Tk()
- screen=Text(root,height=4,width=110)
- screen.pack()
- screen.insert(INSERT,"输入查找关键词:")
- screen2=Text(root,height=8,width=110)
- screen2.pack()
- def run():
- count = 1
- key=screen.get(1.0,END)
- key=key.split(':')[1]
- root_url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%s&pn=0&gsm=500000064' % (
- str(urllib.parse.quote(key)) + '%e5%a3%81%e7%ba%b8')
- picture_url = []
- html = requests.get(root_url).text
- picture_url = re.findall('"objURL":"(.*?)",', html, re.S)
- path = 'E:/search_picture/%d.jpg' % count
- for url in picture_url:
- try:
- #经过debug发现是下面这句代码的问题,但是不知道什么问题,反正没有下面这句显示其他东西就是正常的
- urllib.request.urlretrieve(url, path)
- screen2.insert(INSERT,'正在下载第%d张:%s\n' % (count, url))
- count = count + 1
- path = 'E:/search_picture/%d.jpg' % count
- except:
- screen2.insert(INSERT,'当前图片链接不可用\n')
- screen2.insert(INSERT,'下载完成,%d张图片保存在E盘search_picture文件夹\n'%count)
- bot=Button(root,text='开始下载',command=run)
- bot.pack()
- mainloop()
复制代码
感谢SixPy的帮助,问题已解决,贴上代码
- import urllib.request
- import re
- import os
- import urllib.parse
- import requests
- from tkinter import *
- import threading
- os.mkdir('E:/search_picture/')
- root=Tk()
- screen=Text(root,height=4,width=110)
- screen.pack()
- screen.insert(INSERT,"输入查找关键词:")
- screen2=Text(root,height=8,width=110)
- screen2.pack()
- def down(urls):
- count = 1
- for url in urls:
- try:
- path = 'E:/search_picture/%d.jpg' % count
- urllib.request.urlretrieve(url,path)
- screen2.insert(INSERT,"正在下载第%d张:%s\n"%(count,url))
- count = count+1
- except:
- screen2.insert(INSERT,"当前图片链接不可用\n")
- def run():
- count = 1
- key=screen.get(1.0,END)
- key=key.split(':')[1]
- root_url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%s&pn=0&gsm=500000064' % (
- str(urllib.parse.quote(key)) + '%e5%a3%81%e7%ba%b8')
- picture_url = []
- html = requests.get(root_url).text
- picture_url = re.findall('"objURL":"(.*?)",', html, re.S)
- p = threading.Thread(target=down,args=(picture_url,))
- p.start()
- bot=Button(root,text='开始下载',command=run)
- bot.pack()
- mainloop()
复制代码 |
-
点击下载后
-
下载完才全部显示
|