鱼C论坛

 找回密码
 立即注册
查看: 5942|回复: 38

[作品展示] 多线程下载图片,以及 界面互动~

[复制链接]
发表于 2016-7-22 09:55:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 SixPy 于 2016-7-22 10:06 编辑

多线程下载图片,以及 界面互动~

原贴
text组件显示延迟问题
http://bbs.fishc.com/thread-73987-1-1.html

                               
登录/注册后可看大图


下面的程序只是个示范,没有对细节进行太多处理。
也只是下载所有图片链接的前10张~
由于文件会 重名,所以 运行前 先清空 E:/search_picture/ 中的所有图片。

把代码保存为 pyw ,例如: download-pic.pyw;然后双击运行。
  1. import requests as req
  2. import re
  3. import tkinter as tk
  4. import threading

  5. lock=threading.Lock()

  6. Headers = {
  7.     'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  8.     'Accept-Encoding':'gzip,deflate,sdch',
  9.     'Accept-Language':'zh-CN,zh;q=0.8',
  10.     'Connection':'keep-alive',
  11.     'Host':'image.baidu.com',
  12.     'User-Agent':'Mozilla/5.0 (Windows NT 5.1)'
  13. }

  14. def getPicUrl():
  15.     bd_url='http://image.baidu.com/search/flip'
  16.     Param = {
  17.         'tn':'baiduimage',
  18.         'ie':'utf-8',
  19.         'word':'壁纸',
  20.         'pn':'0',
  21.         'gsm':'500000064'
  22.     }

  23.     ssn= req.Session()
  24.     ssn.headers=Headers
  25.     rsp=ssn.get(bd_url,params = Param)
  26.     rsp.encoding='utf-8'
  27.     html=rsp.text
  28.     pic_url = re.findall('"objURL":"([^"]*)",', html)
  29.     return pic_url

  30. def down_thd(pic_url,num):
  31.     picPath='E:/search_picture/pic%d.jpg'
  32.    
  33.     lock.acquire()
  34.     screen2.insert(tk.INSERT,'正在下载第%d张:%s\n' % (num, pic_url))
  35.     lock.release()
  36.    
  37.     headers=Headers
  38.     headers['Host']=re.findall('://(.*?)/',pic_url)[0]
  39.     try:
  40.         rsp=req.get(pic_url,headers=headers) # 下载图片
  41.     except:
  42.         lock.acquire()
  43.         screen2.insert(tk.INSERT,'%d 下载失败!\n'  % num)
  44.         lock.release()
  45.         return
  46.         
  47.     try:
  48.         with open(picPath % num,'xb') as picf:
  49.             picf.write(rsp.content) # 保存图片
  50.     except:
  51.         lock.acquire()
  52.         screen2.insert(tk.INSERT,'%d 保存失败!\n'  % num)
  53.         lock.release()
  54.         return
  55.         
  56.     lock.acquire()
  57.     screen2.insert(tk.INSERT,'%d完成\n'  % num)
  58.     lock.release()
  59.     return
  60.    
  61. def run():
  62.     pic_url = getPicUrl()
  63.     pic_url = pic_url[:10] # 只下10张,示范

  64.     thds=[]
  65.     for i in range(len(pic_url)):
  66.         t=threading.Thread(target=down_thd, args=(pic_url[i],i))
  67.         thds.append(t)
  68.         
  69.     for t in thds:
  70.         t.start()        
  71.     return

  72. ##import os
  73. ##os.mkdir('E:/search_picture/')  ##这个文件夹就自己手动新建一个吧
  74. root=tk.Tk()
  75. screen2=tk.Text(root,height=25,width=110)
  76. screen2.pack()

  77. bot=tk.Button(root,text='开始下载',command = run)
  78. bot.pack()
  79. root.mainloop()
复制代码


效果:
down-pic.PNG

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 3荣誉 +20 鱼币 +20 贡献 +13 收起 理由
拈花小仙 + 5 + 5 + 3 感谢楼主无私奉献!
~风介~ + 5 + 5 + 5 支持楼主!
冬雪雪冬 + 10 + 10 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2016-7-22 12:21:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-22 14:04:55 | 显示全部楼层
楼住 真棒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-24 08:44:56 | 显示全部楼层
还在用xp?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-24 09:15:48 | 显示全部楼层

路边捡了个电脑~
发现只能装xp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-28 09:26:28 | 显示全部楼层
棒棒哒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 15:34:37 | 显示全部楼层
zzzzzzzzzzzzzz

评分

参与人数 1鱼币 -3 收起 理由
无符号整形 -3 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-18 13:08:49 | 显示全部楼层
66666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-21 14:59:25 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-21 19:34:10 | 显示全部楼层
看看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-30 10:12:29 | 显示全部楼层
111111111111111

评分

参与人数 1鱼币 -1 收起 理由
SixPy -1 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-30 20:15:41 | 显示全部楼层
6666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-9-10 22:51:26 | 显示全部楼层
怎么用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-12 10:35:00 | 显示全部楼层
kankan !!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-13 09:48:24 | 显示全部楼层
开始看到screen2.insert一头雾水,原来在最下面。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-15 15:20:58 | 显示全部楼层
看看详细情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-7 13:26:32 | 显示全部楼层
感谢分享源码,学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-7 13:31:29 | 显示全部楼层
阿萨德
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-7 17:14:24 | 显示全部楼层
3q,我来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-23 20:57:09 | 显示全部楼层

看看详细情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 10:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表