图片自动下载器-单线程增量式爬虫
立即下载
资源介绍:
程序名称:ImageSpider
程序介绍:
ImageSpider是一款网络图片爬取工具,它可以根据用户键入的关键词和数量自动检索并下载网络图片。用户只需输入想要搜索的图片关键词和希望下载的数量,ImageSpider就会自动开始工作,将相关图片下载到本地。
ImageSpider还提供了增量爬取的选择。如果用户选择增量爬取,那么在每次运行程序时,它只会下载新的、未被下载过的图片,而不会重复下载已经存在的图片。这对于需要定期更新图片库的用户来说非常有用。
使用场景:
ImageSpider适用于各种需要自动化检索与下载网络图片的场景。例如,网站管理员可以使用它来自动更新网站上的图片库;设计师可以使用它来寻找灵感和素材;研究人员可以使用它来收集特定主题的图片数据等。无论是个人用户还是企业用户,都可以从ImageSpider的强大功能中受益。
# ImageSpider 说明文档
## 一、程序简介
>ImageSpider是一个自动化下载公网图片的单线程增量式爬虫程序
## 二、程序概述
>1. 开发环境: python3.8
>2. IDE: Pycharm 2024.1
>3. 项目作者: 2578713815@qq.com
>4. 程序最后更新时间:2024.8.5 23:42
>5. 文档最后修改时间: 2024.8.5 23:50
## 三、功能特点
>1. 收集用户键入关键词和需要的图片数量
>2. 按照键入信息下载图片
>3. 下载的图片序列号将会被记录在LOG.TXT文件中,并作为下一次同名关键词下载的重复性依据,确保不会下载重复图片
>4. 可以手动选择是否开启增量爬取
## 四、安装与使用
### 4.1 安装
>1. 绿色应用, 无需安装;
>2. 将本程序压缩包解压,确保所有文件都不缺失;
### 4.2 使用
>1. 首先确保网络连接稳定, 可以正常访问'https://images.baidu.com/'
>2. 双击程序(ImageSpider.exe)即可开始使用;
> 例子:
>1. 输入关键词:aaa,输入图片数量:5;
>2. 若是第一次搜索aaa,则等待程序运行完成即可;
>3. 若不是第一次搜索aaa, 则根据SETTINGS.json文件中的增量开关来决定是否使用增量式爬取;
> 设置增量式开关:
>> 用记事本打开 SETTINGS.json 修改"incrementalSwitch"的键值;
>
>> {"incrementalSwitch": 1} --> 增量式爬取;
>
>> {"incrementalSwitch": 0} --> 非增量爬取 ;
### 4.3 格式转换
> 1. 本程序默认下载JPEG格式文件;
> 2. 若需要转换格式,请使用 formatConversion文件夹 下的 formatConversion.exe 进行图像格式转化;
> 3. 目前支持转化的格式(其他格式暂未测试,不保证能成功转化):
>> ·JPEG,WEBP,PNG,TIFF之间的相互转化
>>
>> ·JPEG->ICON
>
> 4. `formatConversion/formatConversion.exe`: 图片格式转换工具--将需要转换的图片放在`formatConversion/OriginalImage` 文件夹下,再启动`formatConversion/formatConversion.exe`即可;
## 五、注意事项
>1. 本程序仅供学习和研究使用,请勿用于非法或商业用途;
>2. 本程序版权与最终解释权归作者所有;
>3. 使用时如果出现报毒,忽略即可(数字证书是自己做的,没钱买😅😅😅)
>4. 如有问题,请联系作者(邮箱:2878713815@qq.com);
>5. 作者QQ:2878713815;
>6. 作者v:z18256956639;
>7. 交流群(QQ):897871645;
## 六、版本更新记录
>1. 版本号说明: 主版本号.次版本号.修订版本号.类型(0-测试开发, 1-稳定发布)
>2. 项目创建;| 2024.7.4
>3. 版本0.0.0.0~1.0.0.0;| 2024.7.6
>4. 版本2.0.0.0 将之前的代码完全重构,优化效率和稳定性,删除冗余功能, 将多线程爬取改为单线程;| 2024.7.16 22:54
>5. 版本2.1.0.0 增加设置文件,内置增量式开关,可以在程序外设置是否开启增量爬取;| 2024.8.5 23:50
## 七、开发者记录
> `json.loads(data, encoding='utf-8')` 在python3.9及以后的版本中,`encoding`参数被移除
> `json.loads`和`json.dumps`将默认采用`utf-8`编码, 若要转码, 需要在dumps后使用对应的格式转换, 例如
> ```python
> import json
> data = {0:"a", 1:"b"}
> json_str = json.dumps(data) # 将字典转换成json字符串
>
> utf8_str = json_str.encode('utf-8') # 将json字符串转换成utf-8字节串
> gbk_str = utf8_str.decode('utf-8').encode('gbk') # 先将utf-8字节串解码, 再编码成gbk字节串
> ```
> json.loads: 将json字符串解析为python对象(字典)
> json.dumps: 将python对象(字典)转换成json字符串
> `re.sub(r'[\U0001F600-\U0001F64F\U0001F300-\U0001F5FF\U0001F680-\U0001F6FF\U0001F1E0-\U0001F1FF]', '', html_text)`
> 抓取到的json数据中可能会出现emoji表情符号, 这段代码用于删去这些符号, 避免接下来用json.loads转换时的编码报错
> 发现主程序在虚拟环境中打包的exe文件在运行时,会出现无法解析json数据的情况(报错点 line 169),暂未找到原因