学了一段时间的爬虫,于是就想着做一个小项目练练手,平时生活中我们可能需要去百度上搜索图片,有时想要下载多张图片,怎么办呢?笨方法就是一张一张的用鼠标右键进行保存图片,这是不是很麻烦,所以就自己想了一下,做个界面版的下载器,方便我们可以进行批量下载百度图片!

百度图片下载器的界面效果:

判断条件:
1、判断搜索的关键词是否为空

2、判断保存路径是否为空

3、判断页数是否为空

此篇文章所涉及的知识点主要有:requests库,tkinter图形化界面

1、通过requests库发起请求,得到数据,并且使用正则将图片匹配出来,接下来就是保存图片的

def images(self, url, path):# 添加请求头headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4315.5 Safari/537.36',}# 发送请求req = requests.get(url, headers=headers)# 保存源文件html = req.text# 匹配图片格式images = re.findall('"thumbURL":"(.*?)"', html, re.S)# 循环输入imagefor index, image in enumerate(images):req = requests.get(image)# 动态拼接图片文件名file = '{}{}'.format(self.rekeyword, image.split(',')[-1].split('&')[0])with open('{}/'.format(path) + file + '.jpg', 'wb') as f:f.write(req.content)

虽然是个小项目,可能会有很多不足的地方,希望大家也能够提出宝贵的意见,大家一起进行学习,让这个项目更加的完善,谢谢!!!

最后附上全部代码。

完整代码如下:

import tkinter as tk
from tkinter import messagebox, DISABLED
import os, re
import requests
from tkinter.filedialog import askdirectoryclass Baidu():def __init__(self):self.repage = 0# 定义一个文件路径选择的方法def root(self):path_ = askdirectory()path.set(path_)# 定义一个btnserach按钮事件的方法def click(self):keyword = entword.get()root = entroot.get()page = entpage.get()if keyword == '':tk.messagebox.showinfo('警告', message='你还没有输入关键词')else:if root == '':tk.messagebox.showinfo('警告', message='你还没有选择保存路径')else:if page == '':tk.messagebox.showinfo('警告', message='你还没有输入想要下载的页数')else:if not page.isdigit():tk.messagebox.showinfo('警告', message='请输入数字')else:root = root + '/' + keywordtk.messagebox.showinfo('成功', message='点击确定,等待图片下载,下载过程中请勿关闭窗口,下载结束会自动关闭')# 将返回值self.rekeyword = keywordself.reroot = rootself.repage = page# 调用save方法self.save()# 关闭窗口window.quit()def close(self):self.repage = 0# 关闭窗口window.quit()# 定义保存路径和文件夹的方法def save(self):if os.path.exists('{}'.format(self.reroot)) is False:os.mkdir(self.reroot)def images(self, url, path):# 添加请求头headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4315.5 Safari/537.36',}# 发送请求req = requests.get(url, headers=headers)# 保存源文件html = req.text# 匹配图片格式images = re.findall('"thumbURL":"(.*?)"', html, re.S)# 循环输入imagefor index, image in enumerate(images):req = requests.get(image)# 动态拼接图片文件名file = '{}{}'.format(self.rekeyword, image.split(',')[-1].split('&')[0])with open('{}/'.format(path) + file + '.jpg', 'wb') as f:f.write(req.content)if __name__ == '__main__':# 实例化一个Baidu类baidu = Baidu()# 创建一个窗口window = tk.Tk()# 设置窗口标题window.title('下载器')# 设置窗口大小window.geometry('500x300')# 创建按钮,并且将按钮放到窗口里面,text给按钮设置名字labtitle = tk.Label(window, text='百度图片批量下载器', font=("微软雅黑", 18))labword = tk.Label(window, text='请输入关键词:')entword = tk.Entry(window)labroot = tk.Label(window, text='请选择保存路径:')path = tk.StringVar()entroot = tk.Entry(window, textvariable=path, state=DISABLED)btnroot = tk.Button(window, text="路径选择", command=baidu.root)labpage = tk.Label(window, text='请选择下载页数:')entpage = tk.Entry(window)btnserach = tk.Button(window, text='开始下载', command=baidu.click)btnexit = tk.Button(window, text='    退出    ', command=baidu.close)# 给按钮布局到窗口的哪个地方labtitle.place(x=140, y=20)labword.place(x=100, y=70)entword.place(x=200, y=70)labroot.place(x=100, y=120)entroot.place(x=200, y=120)btnroot.place(x=350, y=115)labpage.place(x=100, y=170)entpage.place(x=200, y=170)btnserach.place(x=150, y=240)btnexit.place(x=250, y=240)# 显示窗口window.mainloop()# 下载的页数for i in range(1, int(baidu.repage) + 1):url = 'https://image.baidu.com/search/acjson?' \'tn=resultjson_com&logid=11634671260851425331&ipn=rj' \'&ct=201326592&is=&fp=result&queryWord={}&cl=2&lm=-1' \'&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=&latest=&copyright=' \'&word={}&s=&se=&tab=&width=&height=&face=0&istype=2' \'&qc=&nc=1&fr=&expermode=&force=&pn={}&rn=30&gsm={}e&1607738339848='.format(baidu.rekeyword,baidu.rekeyword,i * 30, i)baidu.images(url, baidu.reroot)

一款简易的百度图片批量下载软件相关推荐

  1. 百度图片批量下载软件

    介绍: 做泛目录时候,我们需要下载一些和自己内容相关的图片,只能慢慢去找去保存,效率很低,这款软件可以批量下载相关的图片,很方便,亲测可用! 百度图库图片批量下载助手,软件小巧方便,可以通过关键词将百 ...

  2. 百度图片批量下载助手

    简介: 百度图片批量下载助手可以帮助用户将所需的百度图库图片下载下来,支持批量下载,软件功能很强大,使用起来也很简单,用户可以通过搜索关键词查找到相关的图片,从而将百度图库下载到本地,软件占用内存小, ...

  3. 图片批量下载软件-全网图片免费批量下载软件

    图片批量下载软件,今天给大家分享一款免费图片批量下载软件,支持任意格式的图片批量下载,只需要输入关键词或批量导入网页链接即可下载图片.批量下载任意网页上的图片,每个人都可以拥有各种高清图源.支持批量图 ...

  4. 一款免费的百度网盘下载软件

    一款免费的百度网盘下载软件 . 接下来,开始介绍我们的主角:proxyee-down .这是github开源的一个项目,给大佬的项目宣传一下,作者使用本地http代理服务器方式嗅探下载请求,支持所有操 ...

  5. 自己动手写工具:百度图片批量下载器

    开篇:在某些场景下,我们想要对百度图片搜出来的东东进行保存,但是一个一个得下载保存不仅耗时而且费劲,有木有一种方法能够简化我们的工作量呢,让我们在离线模式下也能爽爽地浏览大量的美图呢?于是,我们想到了 ...

  6. [python]爬取百度图片批量下载数据集

    如题,用python写的爬虫代码脚本,好用至极 这里推荐:机器学习必备的5个脚本工具详解,包括图像抓取,图像的增强,批处理等操作. 收藏保存 import requests import re fro ...

  7. ChromeFK插件推荐系列十九:网站图片批量下载插件推荐

    本次分享几个网站图片下载插件,内容来自: chromefk.希望对你有所帮助. 1.[CHROMEFK]图片助手(ImageAssistant) 批量图片下载器 一款用于嗅探.分析网页图片并提供批量下 ...

  8. 推荐一款实用的百度网盘下载神器 | proxyee-down

    点击上方"IT行业技术圈",选择"置顶公众号" 关键时刻,第一时间送达! 之前有人使用我曾经推荐过的百度网盘加速器Pan Download,最近跟我反馈,不能使 ...

  9. 推荐一款实用的百度网盘下载神器

    推荐一款百度网盘下载神器 之前有人使用我曾经推荐过的百度网盘加速器Pan Download,最近跟我反馈,不能使用了,我赶紧去打开看一下,果真被作者关停了,一打开软件就提示:由于个别黑心商家将本免费软 ...

最新文章

  1. 哪些人不适合去做科研(转)
  2. Oracle一致性读(Consistent Read)的原理
  3. Dynamic Graph CNN for Learning on Point Clouds(DGCNN)论文阅读笔记——核心思想:EdgeConv细析
  4. genymotion集成eclipse插件安装教程
  5. 【白皮书分享】创新中国2030:释放技术红利,解锁增长动能-埃森哲.pdf(附下载链接)...
  6. 百度发布AI芯片“昆仑”;李笑来脏话录音曝光;Facebook再现新漏洞 | CSDN 极客头条...
  7. 限制UITextView中的字数
  8. nginx return知多少
  9. 读“我为什么不要应届毕业生”
  10. BZOJ 3926: [Zjoi20150]诸神眷顾的幻想乡
  11. PMP®考试通过率多少
  12. Android升级WebView浏览器内核版本
  13. andriod studio 自带模拟器设置开发者模式
  14. Adobe Reader无法将数值DisableExceptionChainValidation写入键
  15. 中国风来袭!如何用ArcGIS制作水墨风山水画?
  16. 系统架构师—软件架构设计(二)CS/BS/SOA/DSSA/ABSD
  17. 2020年鼠年正月十二 淡然面对
  18. 电磁兼容RS485接口EMC电路设计方案
  19. 顶尖程序员 VS 普通程序员
  20. 仿最新BiliBili客户端开源带后台弹幕库版

热门文章

  1. 【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践
  2. python有什么用?
  3. D55XT80-ASEMI大功率三相整流桥55A 800V
  4. 小米6通话音量补丁_小米推出新品对讲机,高颜值,信号强,有了它可以和女神隔空示爱...
  5. 5.2 缺失值处理(去除缺失值)
  6. 机房维护 网拷_网络运行维护及机房应急方案计划
  7. 车号粤 A75M79 少收我钱的的哥(谨表谢意!)
  8. 现在月薪6000,想辞职创业卖早餐,你觉得可行吗?
  9. android moba源码,Unity3D MOBA游戏 完整源码 uMOBAv 1.34
  10. PyScript:让Python在HTML中运行