python做圖片搜索引擎并保存到本地詳情
前言
我們先說(shuō)一下思路:先對(duì)目標(biāo)網(wǎng)站發(fā)送請(qǐng)求,獲取html源碼,然后對(duì)源碼里面的所以圖片鏈接進(jìn)行篩選,然后再次對(duì)圖片鏈接發(fā)送請(qǐng)求,然后保存。
思路大致是這樣,話不多說(shuō),直接上代碼:
用到的模塊:
import requests #請(qǐng)求庫(kù) 第三方庫(kù),需要安裝: pip install requests import re #篩選庫(kù),py自帶,無(wú)需安裝
查找接口:
打開(kāi)F12打開(kāi)開(kāi)發(fā)者工具,點(diǎn)擊網(wǎng)絡(luò)、Fetch/XHR、載荷、依次點(diǎn)下去,可以看到查詢(xún)參數(shù)有兩個(gè),分別是:word:風(fēng)景圖 queryWord:風(fēng)景圖
我們可以利用這兩個(gè)查詢(xún)參數(shù)進(jìn)行自定義:

我們要查找到真實(shí)的url地址,然后對(duì)url查詢(xún)參數(shù)自定義,點(diǎn)擊旁邊的標(biāo)頭,我們看見(jiàn)了剛才的查詢(xún)參數(shù):word 和queryWord這兩個(gè)參數(shù),

接下來(lái),我們使用讓用戶(hù)輸入?yún)?shù)值,然后進(jìn)行傳參到url地址里面的word和queryWord參數(shù),
那么word和queryWord參數(shù),url地址里面就不能有了值了,使用{}被傳參,后面使用format函數(shù)對(duì)輸入的參數(shù)進(jìn)行傳參{},最后形成我們需要的網(wǎng)址
word = input('請(qǐng)輸入要搜索的圖片:')
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) 打開(kāi)網(wǎng)址就是你輸入的內(nèi)容下一步我們要對(duì)請(qǐng)求頭進(jìn)行偽裝,防止被服務(wù)器識(shí)別為爬蟲(chóng)程序
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'}判斷該文件夾是否存在,存在則創(chuàng)建,不存在則覆蓋;發(fā)送請(qǐng)求并打印源碼
if not os.path.exists(files): #假如沒(méi)有文件執(zhí)行以下代碼:
os.makedirs(files) #有文件夾則覆蓋,沒(méi)有則創(chuàng)建
req=requests.get(url=url,headers=headers).text #獲取源碼
print(req) #輸出源碼正則式:
res='"thumbURL":"(.*?)"' #正則式 zhengze=re.findall(res,req) #調(diào)用findall函數(shù)進(jìn)行匹配
遍歷url地址并發(fā)送請(qǐng)求
i=1 #計(jì)數(shù)
for a in zhengze: #遍歷刷選后的網(wǎng)址 get_image(a,i) #將遍歷后的url地址傳到get-image這個(gè)函數(shù)
i+=1 #每執(zhí)行一次加1
print(a) #打印地址
response=requests.get(url=a,headers=headers).content #獲取二進(jìn)制文件設(shè)置保存類(lèi)型及保存位置
file=files+word+str(i)+'張.jpg' #設(shè)置 文件夾 路徑+文件名以及類(lèi)型 (完整地址)
with open(file,'wb') as f: #寫(xiě)二級(jí)制文件類(lèi)型,并修改變量名
f.write(response) #把獲取到的二進(jìn)制文件寫(xiě)入
print(word+str(i)+'張.jpg''保存成功') #提示保存成功那么接下來(lái)奉上完整源碼:
import re #篩選url
import requests #請(qǐng)求
import os #創(chuàng)建文件夾
word = input('請(qǐng)輸入要搜索的圖片:')
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) #創(chuàng)建文件夾路徑
if not os.path.exists(files): #假如沒(méi)有文件執(zhí)行以下代碼:
os.makedirs(files) #有文件夾則覆蓋,沒(méi)有則創(chuàng)建
req=requests.get(url=url,headers=headers).text #獲取源碼
res='"thumbURL":"(.*?)"' #正則式
zhengze=re.findall(res,req) #篩選
i=1 #計(jì)數(shù)
for a in zhengze: #遍歷刷選后的網(wǎng)址 get_image(a,i) #將遍歷后的url地址傳到get-image這個(gè)函數(shù)
i+=1 #每執(zhí)行一次加1
print(a) #打印地址
response=requests.get(url=a,headers=headers).content #獲取二進(jìn)制文件
file=files+word+str(i)+'張.jpg' #設(shè)置 文件夾 路徑+文件名以及類(lèi)型 (完整地址)
with open(file,'wb') as f: #寫(xiě)二級(jí)制文件類(lèi)型,并修改變量名
f.write(response) #把獲取到的二進(jìn)制文件寫(xiě)入
print(word+str(i)+'張.jpg''保存成功') #提示保存成功我們來(lái)看看運(yùn)行結(jié)果怎么樣:

可以看到我搜索的是柴犬,對(duì)源碼中的每個(gè)圖片鏈接進(jìn)行發(fā)送并保存。
那我保存的圖片是否是柴犬呢?我們看看吧:

可以看到保存的就是柴犬圖片并且創(chuàng)建了一個(gè)文件夾!
到此這篇關(guān)于python做圖片搜索引擎并保存到本地詳情的文章就介紹到這了,更多相關(guān)python圖片搜索引擎內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 10分鐘用Python快速搭建全文搜索引擎詳解流程
- python基于搜索引擎實(shí)現(xiàn)文章查重功能
- Python實(shí)戰(zhàn)之手寫(xiě)一個(gè)搜索引擎
- Python大批量搜索引擎圖像爬蟲(chóng)工具詳解
- Python無(wú)損音樂(lè)搜索引擎實(shí)現(xiàn)代碼
- 淺談?dòng)肞ython實(shí)現(xiàn)一個(gè)大數(shù)據(jù)搜索引擎
- Python搜索引擎實(shí)現(xiàn)原理和方法
- Python中使用haystack實(shí)現(xiàn)django全文檢索搜索引擎功能
- 用python做一個(gè)搜索引擎(Pylucene)的實(shí)例代碼
- 以Python的Pyspider為例剖析搜索引擎的網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)方法
相關(guān)文章
python腳本設(shè)置超時(shí)機(jī)制系統(tǒng)時(shí)間的方法
這篇文章主要介紹了python腳本設(shè)置超時(shí)機(jī)制系統(tǒng)時(shí)間的方法,感興趣的小伙伴們可以參考一下2016-02-02
異步任務(wù)隊(duì)列Celery在Django中的使用方法
對(duì)于網(wǎng)站來(lái)說(shuō),給用戶(hù)一個(gè)較好的體驗(yàn)是很重要的事情,其中最重要的指標(biāo)就是網(wǎng)站的瀏覽速度。因此服務(wù)端要從各個(gè)方面對(duì)網(wǎng)站性能進(jìn)行優(yōu)化,這篇文章主要介紹了異步任務(wù)隊(duì)列Celery在Django中的使用方法,感興趣的小伙伴們可以參考一下2018-06-06
python re庫(kù)的正則表達(dá)式入門(mén)學(xué)習(xí)教程
這篇文章主要給大家介紹了關(guān)于python re庫(kù)的正則表達(dá)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Python實(shí)現(xiàn)數(shù)值積分方式
今天小編就為大家分享一篇Python實(shí)現(xiàn)數(shù)值積分方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python基礎(chǔ)編程小實(shí)例之計(jì)算圓的面積
Python是最常用的編程語(yǔ)言,這種語(yǔ)言就是一種可以快速開(kāi)發(fā)應(yīng)用的解釋型語(yǔ)言,有些用戶(hù)不知道該怎么在Python編程里計(jì)算圓的面積,現(xiàn)在就給大家具體解釋一下,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)編程小實(shí)例之計(jì)算圓的面積的相關(guān)資料,需要的朋友可以參考下2023-03-03
django學(xué)習(xí)之a(chǎn)jax post傳參的2種格式實(shí)例
AJAX除了異步的特點(diǎn)外,還有一個(gè)就是:瀏覽器頁(yè)面局部刷新,下面這篇文章主要給大家介紹了關(guān)于django學(xué)習(xí)之a(chǎn)jax post傳參的2種格式的相關(guān)資料,需要的朋友可以參考下2021-05-05
Python實(shí)現(xiàn)識(shí)別XSS漏洞的方法詳解
XSS(跨站腳本攻擊)作為一種常見(jiàn)的網(wǎng)絡(luò)安全漏洞,經(jīng)常被黑客用來(lái)攻擊網(wǎng)站。這篇文章主要介紹了如何利用Python 識(shí)別 XSS 漏洞,需要的可以參考一下2023-02-02
python 環(huán)境搭建 及python-3.4.4的下載和安裝過(guò)程
這篇文章主要介紹了python 環(huán)境搭建 python-3.4.4的下載和安裝過(guò)程,文中給大家補(bǔ)充介紹了pycharm的基本用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07

