利用Python开发图片下载器之教程与源码分享
千库网图片下载助手开发
我是一个很爱美的人,写文章喜欢带点插图. 另外我也有一个VX公众账号,写推文总需要点封面图片和插图的嘛,为了看起来更加美观和优雅. 为此我在网上找了写图片,但是直接通过右键下载感觉很麻烦,而且有些图片网站没办法右键,加上我有时候需要提取图片外链用于markdown编辑. 所以我打算用Python写一个EXE图片下载助手,下面是开发这个助手的详细教程.
准备
- 图片网站:千库网
- 『背景图库』『商用插图』
- 工具:Google Chrome 浏览器,Python 3.6,jupyter notebook(Anaconda)
- Python 库:urllib,re,pyinstaller
注:此网站没办法使用鼠标右键,故无法直接保存图片,直接截图得到的图片包含水印,很不方便使用.
图片URL分析
- 任意一张『商用图库』下的图片,例如:科幻风格精美大气魔方背景
- 按
F12
调出Google Chrome
浏览器的调试工具,再按F5
刷新页面重新加载数据 - 按照下面图片提示操作:
- 复制的网址为
http://bpic.588ku.com/back_pic/04/93/19/07591962bbc0b6c.jpg!r850/fw/800
浏览器地址栏粘贴后,打开,可以看到这个图片是有水印的
- 去水印思路:通过观察image URL,可以看到后缀出现了
jpg
,所以我将网址jpg
之后的删掉,再打开,就发现没有水印了,而且图片看起来也大了一点.
http://bpic.588ku.com/back_pic/04/93/19/07591962bbc0b6c.jpg
- 和原图比较:最后我将图片下载下来,和原图做了些对比(网站限制每天可以免费下载一次),发现这样下载的图片没有原图那么大,其他详细的大家可以自行通过PS进行对比.原图下载有时候是
png
格式,有时候是jpg
格式,部分图片有提供PSD
源文件,但是我觉得jpg
和png
差别不大吧?不过要是对图片有比较高的要求,当然是开会员啦,不过我插图的一般没什么很大的要求.
网页源代码分析
现在对图片的url差不多分析好了,现在要在源代码里面抓取
image url
了. 接下来分析网页的源代码
Ctl + U
或者鼠标右键
- - >查看网页源代码
,接着按Ctl + F
查找image URL
http://bpic.588ku.com/back_pic/04/93/19/07591962bbc0b6c.jpg!r850/fw/800
然后的确存在这一的一个链接,如果找不到,可以尝试删掉一些参数测试.
然后还有『商用图库』的分析也是类似的,这里就不详细分析了,不过这里会存在一点问题,就是这个图库的图片有两种格式,横图和竖图,在抓取的时候注意处理好就可以了,因为我们都是直接复制页面的url然后复制过去的.
写代码测试
message = ["http://588ku.com 千库网图片下载助手","下载说明:仅支持『背景图库』『商用插图』"," ","使用说明:","①在D盘新建一个文件夹“D:\图片素材”","②复制图片网址到软件,然后回车","③图片下载成功将储存在“D:\图片素材”"," "]
for i in range(0,len(message)):print(message[i])def QKDownload():import urllib.requestimport urllib.errorimport reurl = input('请输入图片网址:')headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36")opener = urllib.request.build_opener()opener.addheaders = [headers]data = opener.open(url).read()data2 = data.decode("utf-8", "ignore")pat = 'img-l-box"><img src="(.*?)!|img id="qhimg" src="(.*?)!'imageURL = re.compile(pat).findall(data2)imageURL = max(imageURL)imageURL = "".join(imageURL)pat2 = 'fw/800" alt="([\u4e00-\u9fa5]+)|true" alt="([\u4e00-\u9fa5]+)'i = re.findall(pat2,data2)i = max(i)i = "".join(i)try:print(" ")print("开始下载......")file ="D:/图片素材/"+str(i)+".jpg"urllib.request.urlretrieve(imageURL,file)print(" ")print("下载成功!!!")print(" ")print('图片链接为:')print(" ")print(imageURL)print(" ")print("==============================================我是分割线==============================================")print(" ")print("继续下载......")print(" ")except urllib.error.URLError as e:if hasattr(e,"code"):print(e.code)if hasattr(e,"reason"):print(e.reason) QKDownload()while True:QKDownload()if len(url) != 0:continueQKDownload()
代码说明:代码比较简单,想必大家都看的明白,在D盘建一个文件夹D:\图片素材
,然后就可以在jupyter notebook
或者Pycharm
等IDE运行此代码了.
开始我没有增加图片命名的,后来增加了一个.
打包为EXE可执行文件
准备工作
这里使用pyinstaller
打包,Python也有很多其他的打包库,大家可以根据自己的喜欢选择,因为我个人觉得这个比较简单,也还可以满足大部分的需求.
pyinstall 库官方文档
更多的用法,大家可以自行查看文档.
另外可以增加一个 ico
图标,推荐一个网站:easyicon
开始生成EXE
按照下面的图片操作:
pyinstaller -F -i ico_filename.ico py_filename.py
注:第一个是 ico 图标的名称,第二个是 py 文件名称(建议名称不要带中文,要修改EXE文件名可以到时候打包完成之后再修改)
测试使用
生成的 EXE 文件目录,其他的文件可以选择删除或者保留都没影响. 可以快捷方式到桌面.
测试图片的下载:
- 『背景图库』的一张图片 http://588ku.com/ycbeijing/4490071.html
- 『商用图库』的一张图片 http://588ku.com/ichahua/9695.html
复制浏览器地址栏的网址到下载助手,回车
总结
因为我写文章总是使用 Markdown
编辑的,所以我顺便输出了图片的外链. 由于这是我自己使用的,我直接在源代码添加了存储路径,当然大家也可以增加一个自定义存储路径. 如果大家觉得这个界面不好看,也可以增加一个 GUI
界面,这里我推荐使用 PyQt
开发,原因是市面上关于Python GUI
的书籍较少,然后其他的Python GUI 库
文档不够丰富,而PyQt
是Qt(C++开发)
在Python的应用,所以文档很丰富,开发工具也比较强大和完善。
最后想学习PyQt
的,我这里推荐一本书吧.很抱歉,我没有找到电子版,喜欢的可以自己想办法或者去购买.
其他的大家也可以参考这个办法去继续开发,或者自己写点脚本然后打包,方便自己的工作和学习.
后记
本教程仅学习研究,请不要将本教程用于其他用途.
打包的EXE文件下载:QkPic.exe 提取码:3ygz
欢迎关注我的个人公众账号:net咖啡屋
利用Python开发图片下载器之教程与源码分享相关推荐
- python 开发视频播放网站_python开发微电影视频网站教程附源码
做为一个合格的Pythoner,只掌握一个框架是不够,如果你有过其它Python框架(例如django)的使用经验,对比不同框架的特性来学习,你将收获更多 当前信息若含有黄赌毒等违法违规不良内容,请点 ...
- Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)
目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...
- 校园表白墙搭建教程及源码分享-麻木博客
效果图: 操作环境: 宝塔面板 系统:CentOS Linux 7.5.1804 域名 最好有ssl证书这样可支持https 源码 Nginx与Apache环境均可 不需要配置伪静态 具体步骤: 1: ...
- python:实现Image Downloader图片下载器(附完整源码)
python:实现Image Downloader图片下载器 def ImageDownloader(url):import os, re, requestsresponse = requests.g ...
- python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...
在日常办公或者学习中,往往存在这样一个工作场景,比如,"老王,我这里有一张图片,你把里面的文字信息给我整理出来",都2021年了,你真的还在手敲图片文字信息么?那么还不赶紧收藏这篇 ...
- 【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码
在日常办公或者学习中,往往存在这样一个工作场景,比如,"老王,我这里有一张图片,你把里面的文字信息给我整理出来",都2021年了,你真的还在手敲图片文字信息么?那么还不赶紧收藏这篇 ...
- 【iOS-Cocos2d游戏开发之二】Cocos2D 游戏开发资源贴(教程以及源码)
李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/420.html 这两天抽出 ...
- cocos creator开发的精灵大师小游戏源码分享,支持h5安卓微信小游戏等多平台
截图说明 扫码支持一下 源码下载 https://download.csdn.net/download/qq_36303853/87124571
- Flask+mysql 实现增删改查接口开发+测试(图文教程附源码)
目录 一.前言 二.环境准备 2.1 安装python 2.2 安装mysql 三.工具准备 3.1 安装pycharm 3.2 安装Navicat 3.3 安装postman 四.mysql数据库准 ...
最新文章
- day03-字符编码与转换
- mysql重装要删注册表_Mysql重装问题—删除注册表
- Loadrunner基础:Loadrunner Vuser基本概念和应用
- .Net中DataTable的保存
- 前端后分离深入分析 ——浏览器渲染和服务器渲染区别
- XManager:xshell显示图形化界面
- java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键
- PowerShell入门(三):如何快速地掌握PowerShell?
- 尚学堂java答案解析 第三章
- oracle数据库通过SQL profile 绑定SQL最优执行计划(个人实践)
- php wind8.5,PHPWind Forums下载
- sap系统登录时没有服务器,SAP登录到SAP系统
- 西门子G120调试参数设置
- SQL 数据库 学习 016 如何附加数据库
- python 更换列名
- WPS思维导图去除背景的网格
- 嵌入式系统的软件组成
- Rabbit MQ 基础
- 外星文明 未来计算机,科学家有望未来在地球“设计打印”外星生命
- 小米数据收集利器:AgentSource
热门文章
- 查看B站UP开播状态(通过uid查询)
- WPF ShowDialog切换其他应用后不显示的问题
- HTML5新标签有哪些呢?
- 案例分析 - 百度传课网易云课堂在线教育平台竞品分析
- 3dmax linux版本,[转载]如何安装Linux版FLOW-3D及注意事项
- 《破碎的残阳,我们逆光》连载小说- HashMap剖析
- 上拉滑动拖出控件 scrolllayout
- 基于Opencv快速实现人脸识别(完整版)
- ArcGIS API for javascript开发笔记 —— 地图打印
- python decode ignore_python编解码,decode参数设置:ignore