本文共 3568 字,大约阅读时间需要 11 分钟。
项目名称:爬取图片数据
创建时间:20200514
这是一个用于爬取图片的批量下载工具,支持多关键词搜索和图片批量处理。主要功能包括:
# 示例:爬取“公章”图片dataList = getIntPages('公章', 100) # 依据关键词获取50页的图片列表,每页30张图片fetch_img(stamps_path, dataList) # 存取图片 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) 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")) 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 requests.exceptions.TooManyRedirectsproxies参数)。requests、Pillow、opencv-python等库。图片下载优化
requests的proxies参数设置代理,提升下载速度。图片处理效率
代码可读性
# 示例:爬取“公章”图片import requestsimport reimport osdef 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) # 示例:将图片灰度化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) # 示例:重命名图片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 += 1move_file(src_dir, dst_dir) 如有问题,请在评论区留言,我会尽快解答!
转载地址:http://wcrfk.baihongyu.com/