博客
关于我
图片的批量下载 和 爬虫爬取图片数据集
阅读量:799 次
发布时间:2023-04-04

本文共 3568 字,大约阅读时间需要 11 分钟。

爬取图片批量下载与处理工具

项目名称:爬取图片数据

创建时间:20200514


一、图片批量下载工具说明

1. 工具概述

这是一个用于爬取图片的批量下载工具,支持多关键词搜索和图片批量处理。主要功能包括:

  • 图片下载:支持多关键词批量下载图片,支持分页加载。
  • 图片处理:包括灰度化、重命名和格式转换等功能。
  • 数据转换:将图片格式从BGR转换为RGB,并进行重命名。

2. 工具使用方法

1. 参数配置
  • 关键词输入:支持多关键词搜索,例如“公章”、“发票专用章”、“空姐服装”等。
  • 分页设置:默认每页30张图片,支持自定义分页数量。
  • 保存路径:支持本地路径设置,图片会自动存储到指定目录。
2. 批量下载
# 示例:爬取“公章”图片
dataList = getIntPages('公章', 100) # 依据关键词获取50页的图片列表,每页30张图片
fetch_img(stamps_path, dataList) # 存取图片

二、图片处理工具说明

1. 灰度化工具

def BGR2GRAY(imgs_dir, save_dir):
# 读取图片列表
imgs = os.listdir(imgs_dir)
# 遍历图片文件
for i, name in enumerate(imgs):
img = cv2.imread(os.path.join(imgs_dir, name))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite(os.path.join(save_dir, f'gray_{name}'), gray)

2. 图片重命名

def move_file(src_dir, dst_dir):
# 重命名图片文件
for img in os.listdir(src_dir):
shutil.copyfile(os.path.join(src_dir, img), os.path.join(dst_dir, f"{i:06}.jpg"))

3. 图片格式转换

def convert_to_RGB(imgs_path, save_imgs_path, start=0):
# 遍历图片文件
for img_name in os.listdir(imgs_path):
img = Image.open(os.path.join(imgs_path, img_name))
img_convert_RGB = img.convert("RGB")
img_convert_RGB.save(os.path.join(save_imgs_path, f"{start:06}.jpg"))
start += 1

三、常见错误处理

1. 网络请求错误

  • 错误类型requests.exceptions.TooManyRedirects
  • 解决方法
    • 配置代理(如使用proxies参数)。
    • 增加请求头信息,避免被反爬虫拦截。

2. 代码运行报错

  • 错误类型:未安装依赖库。
  • 解决方法
    • 确保安装了requestsPillowopencv-python等库。
    • 运行脚本前,检查环境变量是否正确配置。

四、工具优化建议

  • 图片下载优化

    • 使用requestsproxies参数设置代理,提升下载速度。
    • 增加下载接口的并发量,减少请求时间。
  • 图片处理效率

    • 使用多线程处理图片,提升处理速度。
    • 优化文件存储路径,避免读写冲突。
  • 代码可读性

    • 添加详细注释,方便维护和修改。
    • 使用清晰的变量命名,提升代码可读性。

  • 五、使用示例

    1. 爬取“公章”图片

    # 示例:爬取“公章”图片
    import requests
    import re
    import os
    def getIntPages(keyword, pages):
    params = []
    for i in range(30, 30*pages+30, 30):
    params.append({
    'tn': 'resultjson_com',
    'ipn': 'rj',
    'ct': '201326592',
    'is': '',
    'fp': 'result',
    'queryWord': keyword,
    'cl': '2',
    'lm': '-1',
    'ie': 'utf-8',
    'oe': 'utf-8',
    'st': '-1',
    'ic': '0',
    'word': keyword,
    'face': '0',
    'istype': '2',
    'nc': '1',
    'pn': i,
    'rn': '30'
    })
    url = 'https://image.baidu.com/search/acjson'
    urls = []
    for i in params:
    content = requests.get(url, params=i).text
    img_urls = re.findall(r'"thumbURL":"(.*?)"', content)
    urls.append(img_urls)
    return urls
    # 示例:爬取“公章”图片并存储
    dataList = getIntPages('公章', 100)
    fetch_img(stamps_path, dataList)

    2. 灰度化处理示例

    # 示例:将图片灰度化
    imgs_dir = 'D:/ZF/2_ZF_data/3_stamp_data/finge'
    save_dir = 'D:/ZF/2_ZF_data/3_stamp_data/'
    def BGR2GRAY(imgs_dir, save_dir):
    imgs = os.listdir(imgs_dir)
    for i, name in enumerate(imgs):
    img = cv2.imread(os.path.join(imgs_dir, name))
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imwrite(os.path.join(save_dir, f'gray_{name}'), gray)
    BGR2GRAY(imgs_dir, save_dir)

    3. 重命名图片示例

    # 示例:重命名图片
    src_dir = r'D:\ZF\2_ZF_data\5_胡子数据\beard\JPEGImages_src'
    dst_dir = r'D:\ZF\2_ZF_data\5_胡子数据\beard\JPEGImages'
    def move_file(src_dir, dst_dir):
    imgs = os.listdir(src_dir)
    i = 1042
    for img in imgs:
    shutil.copyfile(os.path.join(src_dir, img), os.path.join(dst_dir, f"{i:06}.jpg"))
    i += 1
    move_file(src_dir, dst_dir)

    六、代码版本更新

  • v1.0:基础功能完成,支持图片下载、灰度化和重命名。
  • v1.1:增加代理支持,提升下载速度。
  • v1.2:优化图片处理逻辑,提高处理效率。
  • v1.3:添加文件存储路径优化,减少读写冲突。

  • 七、使用前注意事项

  • 权限问题:确保有权限访问目标网站的内容。
  • 网络限制:大文件下载可能受网络状况影响。
  • 图片格式转换:确保目标库已安装,避免运行时错误。

  • 如有问题,请在评论区留言,我会尽快解答!

    转载地址:http://wcrfk.baihongyu.com/

    你可能感兴趣的文章
    Oracle的存储结构
    查看>>
    Oracle的聚合函数group by结合CUBE和ROLLUP的使用
    查看>>
    Oracle监听配置、数据库实例配置等
    查看>>
    Oracle知识补充
    查看>>
    Oracle笔记(十三) 视图、同义词、索引
    查看>>
    Oracle笔记(十) 约束
    查看>>
    Oracle系列:安装Oracle RAC数据库(二)
    查看>>
    oracle系统 介绍,ORACLE数据库管理系统介绍
    查看>>
    oracle获取数据库表、字段、注释、约束等
    查看>>
    oracle表空间查询维护命令大全之三(暂时表空间)史上最全
    查看>>
    oracle表访问方式
    查看>>
    Oracle触发器
    查看>>
    oracle触发器
    查看>>
    oracle触发器
    查看>>
    Oracle计划将ZGC项目提交给OpenJDK
    查看>>
    oracle账号共享
    查看>>
    Oracle重置序列(不删除重建方式)
    查看>>
    Oracle闪回技术(Flashback)
    查看>>
    oracle零碎要点---ip地址问题,服务问题,系统默认密码问题
    查看>>
    oracle零碎要点---oracle em的web访问地址忘了
    查看>>