python做图片搜索引擎并保存到本地详情
作者:?王馨雅? 时间:2021-08-27 01:42:33
前言
我们先说一下思路:先对目标网站发送请求,获取html源码,然后对源码里面的所以图片链接进行筛选,然后再次对图片链接发送请求,然后保存。
思路大致是这样,话不多说,直接上代码:
用到的模块:
import requests #请求库 第三方库,需要安装: pip install requests
import re #筛选库,py自带,无需安装
查找接口:
打开F12打开开发者工具,点击网络、Fetch/XHR、载荷、依次点下去,可以看到查询参数有两个,分别是:word:风景图 queryWord:风景图
我们可以利用这两个查询参数进行自定义:
我们要查找到真实的url地址,然后对url查询参数自定义,点击旁边的标头,我们看见了刚才的查询参数:word 和queryWord这两个参数,
接下来,我们使用让用户输入参数值,然后进行传参到url地址里面的word和queryWord参数,
那么word和queryWord参数,url地址里面就不能有了值了,使用{}被传参,后面使用format函数对输入的参数进行传参{},最后形成我们需要的网址
word = input('请输入要搜索的图片:')
url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=5853806806594529489&ipn=rj&ct=201326592&is=&fp=result&fr=ala&word={}&queryWord={}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=©right=&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=&expermode=&nojc=&isAsync=&pn=30&rn=30&gsm=1e&1658411978178='.format(word, word)
print(url) 打开网址就是你输入的内容
下一步我们要对请求头进行伪装,防止被服务器识别为爬虫程序
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39'}
判断该文件夹是否存在,存在则创建,不存在则覆盖;发送请求并打印源码
if not os.path.exists(files): #假如没有文件执行以下代码:
os.makedirs(files) #有文件夹则覆盖,没有则创建
req=requests.get(url=url,headers=headers).text #获取源码
print(req) #输出源码
正则式:
res='"thumbURL":"(.*?)"' #正则式
zhengze=re.findall(res,req) #调用findall函数进行匹配
遍历url地址并发送请求
i=1 #计数
for a in zhengze: #遍历刷选后的网址 get_image(a,i) #将遍历后的url地址传到get-image这个函数
i+=1 #每执行一次加1
print(a) #打印地址
response=requests.get(url=a,headers=headers).content #获取二进制文件
设置保存类型及保存位置
file=files+word+str(i)+'张.jpg' #设置 文件夹 路径+文件名以及类型 (完整地址)
with open(file,'wb') as f: #写二级制文件类型,并修改变量名
f.write(response) #把获取到的二进制文件写入
print(word+str(i)+'张.jpg''保存成功') #提示保存成功
那么接下来奉上完整源码:
import re #筛选url
import requests #请求
import os #创建文件夹
word = input('请输入要搜索的图片:')
url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=5853806806594529489&ipn=rj&ct=201326592&is=&fp=result&fr=ala&word={}&queryWord={}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=©right=&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=&expermode=&nojc=&isAsync=&pn=30&rn=30&gsm=1e&1658411978178='.format(word, word)
#伪装浏览器
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39'}
files='D:/{}/'.format(word) #创建文件夹路径
if not os.path.exists(files): #假如没有文件执行以下代码:
os.makedirs(files) #有文件夹则覆盖,没有则创建
req=requests.get(url=url,headers=headers).text #获取源码
res='"thumbURL":"(.*?)"' #正则式
zhengze=re.findall(res,req) #筛选
i=1 #计数
for a in zhengze: #遍历刷选后的网址 get_image(a,i) #将遍历后的url地址传到get-image这个函数
i+=1 #每执行一次加1
print(a) #打印地址
response=requests.get(url=a,headers=headers).content #获取二进制文件
file=files+word+str(i)+'张.jpg' #设置 文件夹 路径+文件名以及类型 (完整地址)
with open(file,'wb') as f: #写二级制文件类型,并修改变量名
f.write(response) #把获取到的二进制文件写入
print(word+str(i)+'张.jpg''保存成功') #提示保存成功
我们来看看运行结果怎么样:
可以看到我搜索的是柴犬,对源码中的每个图片链接进行发送并保存。
那我保存的图片是否是柴犬呢?我们看看吧:
可以看到保存的就是柴犬图片并且创建了一个文件夹!
来源:https://blog.csdn.net/m0_63533079/article/details/126253460
标签:python,图片,搜索,引擎
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
带农历及节日的js日历源码
2010-08-01 17:38:00
![](https://img.aspxhome.com/file/UploadPic/20108/1/201081174033330s.jpg)
sqlserver 触发器学习(实现自动编号)
2012-10-07 10:58:03
最新整理Python中的type和object的示例详解
2023-08-10 05:21:44
ASP函数验证带小数点数字格式
2010-01-02 20:41:00
MYSQL数据库表设计与优化(二)
2010-10-25 20:12:00
解析Oracle数据库中的对象集合schema
2023-07-22 20:42:34
![](https://img.aspxhome.com/file/2023/8/64458_0s.jpg)
增强网站的魅力 网页制作技巧三则
2007-10-04 10:06:00
php反序列化之魔术方法超详细讲解
2023-11-16 07:24:59
![](https://img.aspxhome.com/file/2023/1/55621_0s.png)
实战手记:让百万级数据瞬间导入SQL Server
2010-06-07 14:13:00
![](https://img.aspxhome.com/file/UploadPic/20106/201067122858333s.jpg)
.Net Core下使用Dapper的方法
2023-07-16 17:19:17
教你怎样打造SQL Server2000的安全策略
2009-01-23 14:03:00
用途相似的标签
2008-05-23 13:11:00
ASP 三层架构 Error处理类
2011-03-16 11:06:00
在原窗口还是新窗口打开链接?
2009-12-07 21:24:00
Python数据类型转换详解
2021-03-04 04:11:13
Web设计中的黄金分割[译]
2009-02-20 13:41:00
![](https://img.aspxhome.com/file/UploadPic/20092/20/01-25s.jpg)
Django中modelform组件实例用法总结
2023-09-28 14:35:49
![](https://img.aspxhome.com/file/2023/2/63222_0s.png)
教你四种方法用来查看mysql版本
2009-06-28 11:13:00
mysql导入导出命令
2011-07-04 11:28:50
仿6room网站图片链接效果
2007-06-21 13:59:00
![](https://img.aspxhome.com/file/uploadpic/20075/2007511165137528.gif)