'''
爬取指定关键字图片
'''
import re  # 正则表达式,解析网页
import requests  # 请求网页
import traceback
import osdef dowmloadPic(html, keyword, startNum):headers = {'user-agent': 'Mozilla/5.0'}  # 浏览器伪装,因为有的网站会反爬虫,通过该headers可以伪装成浏览器访问,否则user-agent中的代理信息为pythonpic_url = re.findall('"objURL":"(.*?)",', html, re.S)  # 找到符合正则规则的目标网站num = len(pic_url)i = startNumsubroot = root + '/' + wordtxtpath = subroot + '/download_detail.txt'print('找到关键词:' + keyword + '的图片,现在开始下载图片...')for each in pic_url:a = '第' + str(i + 1) + '张图片,图片地址:' + str(each) + '\n'b = '正在下载' + aprint(b)path = subroot + '/' + str(i + 1)try:if not os.path.exists(subroot):os.mkdir(subroot)if not os.path.exists(path):pic = requests.get(each, headers=headers, timeout=10)with open(path + '.jpg', 'wb') as f:f.write(pic.content)f.close()with open(txtpath, 'a') as f:f.write(a)f.close()except:traceback.print_exc()print('【错误】当前图片无法下载')continuei += 1return iif __name__ == '__main__':headers = {'user-agent': 'Mozilla/5.0'}# words = ['横幅', '标语', 'slogan']words = ['盆栽植物']# words为一个列表,可以自动保存多个关键字的图片root = './download_images'for word in words:root = root + word + '&'if not os.path.exists(root):os.mkdir(root)for word in words:lastNum = 0# word = input("Input key word: ")if word.strip() == "exit":breakpageId = 0# 此处的参数为需爬取的页数,设置为30页for i in range(5):              #获取5*60张图url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + "&pn=" + str(pageId) + "&gsm=?&ct=&ic=0&lm=-1&width=0&height=0"pageId += 20html = requests.get(url, headers=headers)# print(html.text) #打印网页源码,相当于在网页中右键查看源码内容lastNum = dowmloadPic(html.text, word, lastNum, )  # 本条语句执行一次获取60张图

去掉重复的图片:

import shutil
import numpy as np
from PIL import Image
import osdef 比较图片大小(dir_image1, dir_image2):with open(dir_image1, "rb") as f1:size1 = len(f1.read())with open(dir_image2, "rb") as f2:size2 = len(f2.read())if (size1 == size2):result = "大小相同"else:result = "大小不同"return resultdef 比较图片尺寸(dir_image1, dir_image2):image1 = Image.open(dir_image1)image2 = Image.open(dir_image2)if (image1.size == image2.size):result = "尺寸相同"else:result = "尺寸不同"return resultdef 比较图片内容(dir_image1, dir_image2):image1 = np.array(Image.open(dir_image1))image2 = np.array(Image.open(dir_image2))if (np.array_equal(image1, image2)):result = "内容相同"else:result = "内容不同"return resultdef 比较两张图片是否相同(dir_image1, dir_image2):# 比较两张图片是否相同# 第一步:比较大小是否相同# 第二步:比较长和宽是否相同# 第三步:比较每个像素是否相同# 如果前一步不相同,则两张图片必不相同result = "两张图不同"大小 = 比较图片大小(dir_image1, dir_image2)if (大小 == "大小相同"):尺寸 = 比较图片尺寸(dir_image1, dir_image2)if (尺寸 == "尺寸相同"):内容 = 比较图片内容(dir_image1, dir_image2)if (内容 == "内容相同"):result = "两张图相同"return resultif __name__ == '__main__':load_path = 'F:\\1203\\11.kitchen\\'  # 要去重的文件夹save_path = 'G:\\1203\\666'  # 空文件夹,用于存储检测到的重复的照片os.makedirs(save_path, exist_ok=True)# 获取图片列表 file_map,字典{文件路径filename : 文件大小image_size}file_map = {}image_size = 0# 遍历filePath下的文件、文件夹(包括子目录)for parent, dirnames, filenames in os.walk(load_path):# for dirname in dirnames:# print('parent is %s, dirname is %s' % (parent, dirname))for filename in filenames:# print('parent is %s, filename is %s' % (parent, filename))# print('the full name of the file is %s' % os.path.join(parent, filename))image_size = os.path.getsize(os.path.join(parent, filename))file_map.setdefault(os.path.join(parent, filename), image_size)# 获取的图片列表按 文件大小image_size 排序file_map = sorted(file_map.items(), key=lambda d: d[1], reverse=False)file_list = []for filename, image_size in file_map:file_list.append(filename)# 取出重复的图片file_repeat = []for currIndex, filename in enumerate(file_list):dir_image1 = file_list[currIndex]dir_image2 = file_list[currIndex + 1]result = 比较两张图片是否相同(dir_image1, dir_image2)if (result == "两张图相同"):file_repeat.append(file_list[currIndex + 1])print("\n相同的图片:", file_list[currIndex], file_list[currIndex + 1])else:print('\n不同的图片:', file_list[currIndex], file_list[currIndex + 1])currIndex += 1if currIndex >= len(file_list) - 1:break# 将重复的图片移动到新的文件夹,实现对原文件夹降重for image in file_repeat:shutil.move(image, save_path)print("正在移除重复照片:", image)

【2021-12-06】爬取关键词图片 - 去掉重复图片相关推荐

  1. 使用python爬取斗图网的图片

    使用python爬取斗图网的图片 以下是代码部分: # -*- coding: utf-8 -*- """ Created on Wed Apr 14 14:41:42 ...

  2. 原神2.0宅男福利!爬虫实战,爬取原神真人cos图片并保存,谁的老婆快抱走

    目录 前言 项目介绍 多的我就不说了,源代码附有详细说明 前言 激动的心,颤抖的手,老婆你们谁没有? (图片来源于米游社) 7月21号<原神>2.0发布,大家更新了吗? 更新内容一览: 1 ...

  3. Linux 爬取批量bing图库的图片

    Linux shell脚本实现爬取批量bing图库的图片 访问https://bing.ioliu.cn/?p=23可以看到bing图库第23页的内容,这个Web页有多个图片小样,将鼠标放到某个小样上 ...

  4. 爬虫实战5:爬取全部穿越火线武器的图片以武器名称命名保存到本地文件

    申明:资料来源于网络及书本,通过理解.实践.整理成学习笔记. 文章目录 穿越火线官网 完整代码 运行结果 穿越火线官网 完整代码 import requests# 循环33次,官网武器库展示有33页 ...

  5. python3爬虫爬取百度贴吧下载图片

    python3爬虫爬取百度贴吧下载图片 学习爬虫时没事做的小练习. 百度对爬虫还是很友好的,在爬取内容方面还是较为容易. 可以方便各位读者去百度贴吧一键下载每个楼主的图片,至于是什么类型的图片,就看你 ...

  6. 梦想CAD控件 2021.12.06更新

    梦想CAD控件 2021.12.06更新 下载地址:https://www.mxdraw.com/ndetail_30180.html 修改得到cad.dwg预览图片,如果图片是png格式,读取失败的 ...

  7. 循环爬取图片_Java爬取简单的网页内容和图片

    Java爬取简单的网页内容和图片 根据java网络编程相关的内容,使用jdk提供的相关类可以得到url对应网页的html页面代码. 针对得到的html代码,通过使用正则表达式即可得到我们想要的内容. ...

  8. 十一、练习:爬取图虫网付费图片

    十.练习:爬取图虫网免费图片 今天爬下图虫网付费的图片,比之前的免费图片简单. 这里的付费图片都是一个专辑的 这个我在一个公开课听的,说这个是:https://tuchong.com/rest/tag ...

  9. python爬虫实例手机_Python爬虫实现爬取京东手机页面的图片(实例代码)

    实例如下所示: __author__ = 'Fred Zhao' import requests from bs4 import BeautifulSoup import os from urllib ...

最新文章

  1. 规范的 Commit Message
  2. 力扣(LeetCode)刷题,简单题(第12期)
  3. rewrite 帮助实现页面静态化
  4. Maven+SpringMVC+Dubbo+zookeeper 简单的入门demo配置
  5. 软件开发人员的“七重苦”(2)
  6. 活动目录网域中禁用移动存储(U盘)
  7. UVA - 11361 Investigating Div-Sum Property(数位dp/记忆化搜索板子)
  8. Java @Deprecated注解
  9. kafka幂等producer
  10. 【Objective-C】05-第一个OC的类
  11. UI设计师必备知识|最全UI设计规范!
  12. [Ext JS 7]基于NPM的开发
  13. 学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式
  14. List of Algorithms
  15. 一文带你认识HTML
  16. HTML5中weight属性的作用,css font-weight属性怎么用
  17. 英语写作——常用的 过度词-连接词
  18. 一个月怎么赚到5万块?
  19. 个人网络信息安全管理方法分享
  20. zTree的使用教程

热门文章

  1. 【hibernate框架】核心开发接口-saveOrUpdate方法与delete方法
  2. Android保存图片到数据库,从数据库取图片的方法
  3. Windows server 2003 R2之三:通过域对统一部署客户端软件
  4. [AX]AX2012 使用.NET程序集部署
  5. oracle nvl用法
  6. 【建议收藏】Spring Boot注解全梳理!
  7. 面试官灵魂的一击:你懂MySQL事务吗?
  8. 某程序员毕业进UC,被阿里收购!跳去优酷土豆,又被阿里收购!再跳去饿了么,还被阿里收购!难道阿里想收购的是他?...
  9. 一步一图,带你重头梳理微服务架构!
  10. 给互联网职场人五点吐血建议