【PYTHON】——如何抓取百度图片到本地

简介: 本篇文章主要介绍一下如何抓取百度图片到本地, 从而实现快速找图的需求

本篇文章主要介绍一下如何抓取百度图片到本地, 从而实现快速找图的需求



PYTHON环境配置

PYTHON环境配置以及GEANY编辑器的配置具体可参考博主下面这篇文章

python如何配置文本编辑器Geany


库的安装

在此爬虫中我们需要用到5个库,它们分别是:requests  json  urllib  os  time

cmd代码安装

1.进入cmd命令提示符

d8327671ec9de7353b607e04404c5de.png

2.输入安装代码

pipinstallrequests

image.png

3.依次替换库的名称进行安装,将五个库全部安装完毕,请注意:os和time库一般来说不需要进行安装,python3环境中会自带



代码实现

# -*- coding:utf8 -*-importrequestsimportjsonfromurllibimportparseimportosimporttimeclassBaiduImageSpider(object):
def__init__(self):
self.json_count=0# 请求到的json文件数量(一个json文件包含30个图像文件)self.url='https://image.baidu.com/search/acjson?tn=resultjson_com&logid=5179920884740494226&ipn=rj&ct' \
'=201326592&is=&fp=result&queryWord={' \
'}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&word={' \
'}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&nojc=&pn={' \
'}&rn=30&gsm=1e&1635054081427= 'self.directory=r"C:\Users\86180\Desktop\素材\python素材\爬虫测试\{}"# 存储目录  这里需要修改为自己希望保存的目录  {}不要丢self.header= {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30 '        }
# 创建存储文件夹defcreate_directory(self, name):
self.directory=self.directory.format(name)
# 如果目录不存在则创建ifnotos.path.exists(self.directory):
os.makedirs(self.directory)
self.directory+=r'\{}'# 获取图像链接defget_image_link(self, url):
list_image_link= []
strhtml=requests.get(url, headers=self.header)  # Get方式获取网页数据jsonInfo=json.loads(strhtml.text)
forindexinrange(30):
list_image_link.append(jsonInfo['data'][index]['thumbURL'])
returnlist_image_link# 下载图片defsave_image(self, img_link, filename):
res=requests.get(img_link, headers=self.header)
ifres.status_code==404:
print(f"图片{img_link}下载出错------->")
withopen(filename, "wb") asf:
f.write(res.content)
print("存储路径:"+filename)
# 入口函数defrun(self):
searchName=input("查询内容:")
searchName_parse=parse.quote(searchName)  # 编码self.create_directory(searchName)
pic_number=0# 图像数量forindexinrange(self.json_count):
pn= (index+1)*30request_url=self.url.format(searchName_parse, searchName_parse, str(pn))
list_image_link=self.get_image_link(request_url)
forlinkinlist_image_link:
pic_number+=1self.save_image(link, self.directory.format(str(pic_number)+'.jpg'))
time.sleep(0.2)  # 休眠0.2秒,防止封ipprint(searchName+"----图像下载完成--------->")
if__name__=='__main__':
spider=BaiduImageSpider()
spider.json_count=10# 定义下载10组图像,也就是三百张spider.run()

爬虫的使用

1.完成上述步骤后,创建一份.py文件,复制以上代码到文件中,然后运行会出现如下图所示界面

image.png

2.输入想要抓取的图片,这里以向日葵为例

image.png

3.从上图可以看出,爬虫开始抓取图片,因为代码默认了抓取300张图片,内存过大,这里只抓取了20多张就结束程序了,并且自动在同一目录下创建了一个同名文件夹,如下图所示

image.png

4.可以看到文件中保存了抓取到的向日葵图片

a30e025c9d648c8a536b02414b1b39b.png


代码注意事项

若想一次性设置图片抓取数量多少,则进行以下修改

抓取图片单组数量设置

上述代码默认一组的抓取数量为30张,所想设置单组的图片抓取数量,则将下图所框选处30修改成自己想要的数量

image.png

抓取图片组别数量设置

上述代码默认一次抓取的图片组的数量为10组,所想自己设置图片抓取的组别数量,则将下图所框选处10修改成自己想要的数量

image.png

目录
相关文章
|
1天前
|
XML 数据格式 Python
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
|
1天前
|
开发工具 Python
国外的大学图书馆也像国内的一样吗?用Python脚本抓取期刊的主题标题!
国外的大学图书馆也像国内的一样吗?用Python脚本抓取期刊的主题标题!
|
6天前
|
数据安全/隐私保护 Python
python 图片打水印 透明图片合并
python 图片打水印 透明图片合并
9 1
|
6天前
|
存储 索引 Python
python图片九宫格图片处理
本篇文章介绍了一个Python项目的实现,项目能够处理图片并将其组合成九宫格或四宫格,同时还具备音乐播放功能,对于初学者来说是一个可以进行实战学习的初级项目。
|
6天前
|
存储 计算机视觉 Python
python实现Gif图片的字符画
这是一个Python实战项目,旨在将GIF动态图转化为ASCII字符动画。项目适合有一定Python基础的学习者,主要使用os、imageio、PIL库。首先,代码导入所需库,然后通过PIL创建空白图片并添加文本。接着,程序读取GIF,拆分帧并转为字符画,存入“tmp”目录。同时,代码提供了清空“tmp”目录、将灰度值映射为ASCII字符、将图片处理成字符画的函数。此外,还有创建新画布和合成GIF的步骤。主函数调用这些模块,最终将ASCII字符画合并成GIF。项目展示了将动态图像转换为ASCII艺术的过程。
|
6天前
|
Python
python代码根据点坐标裁切图片
【4月更文挑战第19天】python代码根据点坐标裁切图片
29 2
|
6天前
|
Python
使用Python的Requests库进行网络请求和抓取网页数据
【4月更文挑战第20天】使用Python Requests库进行网络请求和网页数据抓取的步骤包括:安装库(`pip install requests`)、导入库、发送GET/POST请求、检查响应状态码、解析内容、处理Cookies、设置请求头以及异常处理。通过`response`对象访问响应信息,如`status_code`、`text`、`content`和`cookies`。可设置`headers`模拟用户代理,用`try-except`处理异常。
22 7
|
6天前
|
数据采集 Web App开发 开发者
探秘Python爬虫技术:王者荣耀英雄图片爬取
探秘Python爬虫技术:王者荣耀英雄图片爬取
|
6天前
|
Python
如何使用Python的Requests库进行网络请求和抓取网页数据?
【4月更文挑战第19天】使用Python Requests库进行网络请求和网页数据抓取:安装库,导入requests,发送GET/POST请求,检查状态码(如`status_code==200`表示成功),解析响应内容(如`response.text`),处理Cookies和请求头,以及用try-except捕获异常。更多功能可深入学习Requests库。
12 2
|
6天前
|
机器学习/深度学习 算法 自动驾驶
opencv python 图片叠加
【4月更文挑战第17天】