整体步骤分三步:

1.设计tkinter页面布局

2.获取图片链接列表

3.执行下载操作

先放代码

import urllib
import re
import requeststry:from tkinter import *
except ImportError:  #Python 2.xPythonVersion = 2from Tkinter import *from tkFont import Fontfrom ttk import *from tkMessageBox import *class GetbaiduPic:def __init__(self):self.root = Tk()self.root.title('自动下载百度图片')self.root.geometry('800x700')#定义第一个输入框  输入关键字self.var = StringVar()self.flm = Frame(self.root).pack()Label(self.flm,text='请输入关键字').pack()self.e = Entry(self.flm,validate='key',textvariable=self.var).pack()#定义第二个输入框  输入获取张数self.var2 = StringVar()self.flm2 = Frame(self.root).pack()Label(self.flm2,text='请输入获取的张数,输入60的倍数').pack()self.e2 = Entry(self.flm2,validate='key',textvariable=self.var2).pack()#定义第三个输入框  输入保存路径self.var3 = StringVar()self.flm3 = Frame(self.root).pack()Label(self.flm3,text='请输入要保存的路径,例如(D:\pic\),当前目录必须存在').pack()self.e3 = Entry(self.flm3,validate='key',textvariable=self.var3).pack()#设置button,回调下载函数self.button = Button(self.root,text='开始',command=self.print_contone).pack()#设置输入内容函数,返回内容self.S = Scrollbar(self.root)self.l = Text(self.flm2,width=100,height=20)self.S.pack(side=RIGHT, fill=Y)self.l.pack(side=RIGHT, fill=Y)self.S.config(command=self.l.yview)self.l.config(yscrollcommand=self.S.set)#获取图片列表def gethtml(self):self.jpg_list = []rn = '60'#获取张数 最多只能取60pn = 0#开始取的数0为0-30张 120word = self.var.get()coneton = word.encode('utf-8') #转换成str类型try:for i in range(self.b):#获取输入的数字进行循环判断取多少条数据url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result'+'&queryWord='+ coneton + '&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=' + coneton +'&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn='+ str(pn) +'&rn='+ rn +'&gsm=1e&1528178649573='page = urllib.urlopen(url)html = page.read()pattin_pic = '"thumbURL":"(.*?)",'pic_list = re.findall(pattin_pic,html,re.S)for i  in  pic_list:self.jpg_list.append(i)pn += 60 #每次修改为60的倍数return self.jpg_listexcept:print "没有获取到图片信息,请排查原因"#执行下载操作def down_pic(self):a = self.var2.get()#在这一步获取输入的值self.b = int(a)/60#判断b需要遍历几次,遍历值为60的倍数path = self.var3.get()newpath = path.encode('utf-8')#处理为UTF-8格式self.print_content = []self.gethtml()for i,picurl in enumerate(self.jpg_list):#加下标循环 图片列表try:pic = requests.get(picurl, timeout=10)string = newpath + str(i + 1) + '.jpg'#当前目录新建文件夹,并重新命名with open(string,'wb') as f:#开始执行下载操作f.write(pic.content)# print '成功下载第%s张图片:%s' %(str(i + 1),str(picurl))self.print_content.append('成功下载第%s张图片:%s' %(str(i + 1),str(picurl))+ '\n')except Exception as e:# print '下载第%s张图片失败:%s' %(str(i + 1),str(picurl))self.print_content.append('下载第%s张图片失败:%s' %(str(i + 1),str(picurl))+ '\n')print econtinuedef print_contone(self):self.down_pic()for itam in self.print_content:self.l.insert(END,itam)a = GetbaiduPic()
# a.down_pic()
mainloop()

查看百度图片页面,发现获取数据是请求的一个Url,每次下拉页面,变更的参数只有rn和pn

故推断出rn参数为每次获取的张数,最多支持获取60张,pn代表开始获取的张数,也可以理解为开始的索引(例如为pn=30,那就是取31张以后的图片)

下一步就是获取返回数据中的图片url,请求request URl,发现返回数据中非常有规律,都是在thumbURL里面,那就非常简单了,直接正则匹配,获取图片链接

获取到图片链接后,就开始执行 下载图片操作了, 直接使用requests.get 遍历下载图片,并保存到对应文件夹,至此,下载图片功能 大功告成啦~~

在下一步就是tk的布局了,这里也非常简单,就不多赘述了~~

最终效果图:

以上,如果有哪里表述的不清楚,可以直接留言,看到后会第一时间回复~

使用Tkinter + urllib + requests 实现自动下载百度图片相关推荐

  1. python爬虫实战——自动下载百度图片(文末附源码)

    用Python制作一个下载图片神器 前言 这个想法是怎么来的? 很简单,就是不想一张一张的下载图片,嫌太慢. 在很久很久以前,我比较喜欢收集各种动漫的壁纸,作为一个漫迷,自然是能收集多少就收集多少.小 ...

  2. python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片

    python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片 1.前言 在上一篇文章urllib使用:根据关键词自动爬取下载百度图片 当中,我们已经分析过了百度图片的搜索URL的变化 ...

  3. python爬虫实现批量下载百度图片

    今天和小伙伴们合作一个小项目,需要用到景点图片作为数据源,在百度上搜索了一些图片,感觉一个一个手动保存太过麻烦,于是想到用爬虫来下载图片. 本次代码用到了下列一些python模块,需要预先安装Beau ...

  4. Python实用案例,Python脚本,Python实现批量下载百度图片

    往期回顾 Python实现自动监测Github项目并打开网页 Python实现文件自动归类 Python实现帮你选择双色球号码 Python实现每日更换"必应图片"为"桌 ...

  5. 使用Java编写爬虫,下载百度图片

    因为最近需要很多图片素材做机器训练,所以写一个爬虫来下载百度图片里的一些图片,用作机器学习. 先看看效果图: 实现思路: 根据百度图片的Ajax请求,用Chrome获取到URL,然后通过改变URL参数 ...

  6. java下载图片到本地,例如从网上下载图片,下载淘宝图片,下载百度图片等

    java下载图片到本地,例如从网上下载图片,下载淘宝图片,下载百度图片. 直接上代码如下: public static void download(String url,String saveFile ...

  7. python 福利_发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片!...

    对于Python的自动化测试或者是爬虫开发者来说,对于selenium库想必都听说过,selenium本身是作为Web应用测试工具,但是作为爬虫工具也有很广泛的用途. Selenium虽然好用,但是它 ...

  8. urllib3批量下载百度图片

    ''' urllib3批量下载百度图片 ''' import urllib3 import re start_url = 'http://image.baidu.com/search/index?tn ...

  9. python编程图片_python下载百度图片,python图片下载程序

    以前写的一个百度图片下载的代码,现在试试还能用,现在百度图片的质量也是越来越高了,共享一下,让粉丝和图片控能方便下载:后续功能追加请关注我的小站#coding:utf-8 ''' python 2.7 ...

最新文章

  1. 浅析php curl_multi_*系列函数进行批量http请求
  2. 一些C++的开源项目和C++库以及修炼C++的方法
  3. [转]C#遍历局域网的几种方法及比较
  4. Python中提示:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position
  5. win7让任务管理器pid显示出来的方法
  6. javascript : instanceof,typeof,constructor
  7. DBA主宰一切请求,MySQL 查询重写
  8. Javascript 编程风格
  9. Tableau系列软件概况
  10. timesten java_java直接访问Timesten的数据库
  11. 【计算机毕业设计】基于HTML+CSS+JavaScript学生宿舍管理系统
  12. java模拟新浪微博_用java程序模拟登陆新浪微博
  13. C# Math函数汇总
  14. wps插入C/C++代码
  15. python编写规范
  16. 【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part5-完结):信息检索与结果组装
  17. 素数筛(筛选法求素数)
  18. (论文阅读)NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing
  19. Android Studio Win7安装
  20. 不要去外包亲身经历告诉你 去外包的后果

热门文章

  1. 高通SDM845平台Sensor学习——2.Hal层
  2. web安全最亲密的战友Burp Suite2--target模块体验
  3. JAVA 方法区是在堆里面吗
  4. panic 苹果aop_如何通过iphone重启死机日志分析报告 确定故障范围
  5. 基于JAVA租房网站计算机毕业设计源码+系统+lw文档+部署
  6. 博捷芯划片机在LED灯珠EMC支架中切割应用
  7. 一次对在线挂机网站的渗透的例子
  8. lass.exe应用程序错误的解决办法
  9. python爬取王者_Python3爬取王者官方网站英雄数据
  10. 性能测试Locust--(6)非UI模式下运行Locust