python做图片搜索引擎并保存到本地详情

 更新时间:2022年08月10日 11:46:34   作者:꧁王馨雅꧂  
这篇文章主要介绍了python做图片搜索引擎并保存到本地详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

前言

我们先说一下思路:先对目标网站发送请求,获取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=&copyright=&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=&copyright=&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''保存成功') #提示保存成功

我们来看看运行结果怎么样:

 可以看到我搜索的是柴犬,对源码中的每个图片链接进行发送并保存。

那我保存的图片是否是柴犬呢?我们看看吧:

可以看到保存的就是柴犬图片并且创建了一个文件夹!

到此这篇关于python做图片搜索引擎并保存到本地详情的文章就介绍到这了,更多相关python图片搜索引擎内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中base64加密解密方法实例分析

    python中base64加密解密方法实例分析

    这篇文章主要介绍了python中base64加密解密方法,实例分析了base64加密解密的原理、用途与相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • 基于python 字符编码的理解

    基于python 字符编码的理解

    下面小编就为大家带来一篇基于python 字符编码的理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • windows下python 3.6.4安装配置图文教程

    windows下python 3.6.4安装配置图文教程

    这篇文章主要为大家详细介绍了windows下python 3.6.4安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • python字符串拼接+和join的区别详解

    python字符串拼接+和join的区别详解

    这篇文章主要给大家介绍了关于python字符串拼接+和join的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python实操练习案例(六)

    python实操练习案例(六)

    这篇文章主要介绍了python实操练习案例,前面也在陆续的向大家分享了python实操练习的案例,今天小编继续向大家分享python实操练习案例的案例,需要的小伙伴可以参考一下
    2022-02-02
  • python 实现ping测试延迟的两种方法

    python 实现ping测试延迟的两种方法

    这篇文章主要介绍了python 实现ping测试延迟的两种方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python rsa-oaep加密的示例代码

    python rsa-oaep加密的示例代码

    这篇文章主要介绍了python rsa-oaep加密示例的示例代码,帮助大家更好的利用python加解密,感兴趣的朋友可以了解下
    2020-09-09
  • Python numpy.zero() 初始化矩阵实例

    Python numpy.zero() 初始化矩阵实例

    今天小编就为大家分享一篇Python numpy.zero() 初始化矩阵实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python实现位图分割的效果

    Python实现位图分割的效果

    目前网络上大多为用C++或者Matlab编写实现位图分割,所以本文将使用Python实现位图分割这一效果,代码简单易懂,感兴趣的小伙伴可以关注一下
    2021-11-11
  • Python中使用tarfile压缩、解压tar归档文件示例

    Python中使用tarfile压缩、解压tar归档文件示例

    这篇文章主要介绍了Python中使用tarfile压缩、解压tar归档文件示例,本文直接给出解压和压缩代码示例,需要的朋友可以参考下
    2015-04-04

最新评论