python做圖片搜索引擎并保存到本地詳情
前言
我們先說一下思路:先對目標(biāo)網(wǎng)站發(fā)送請求,獲取html源碼,然后對源碼里面的所以圖片鏈接進(jìn)行篩選,然后再次對圖片鏈接發(fā)送請求,然后保存。
思路大致是這樣,話不多說,直接上代碼:
用到的模塊:
import requests #請求庫 第三方庫,需要安裝: pip install requests import re #篩選庫,py自帶,無需安裝
查找接口:
打開F12打開開發(fā)者工具,點擊網(wǎng)絡(luò)、Fetch/XHR、載荷、依次點下去,可以看到查詢參數(shù)有兩個,分別是:word:風(fēng)景圖 queryWord:風(fēng)景圖
我們可以利用這兩個查詢參數(shù)進(jìn)行自定義:
我們要查找到真實的url地址,然后對url查詢參數(shù)自定義,點擊旁邊的標(biāo)頭,我們看見了剛才的查詢參數(shù):word 和queryWord這兩個參數(shù),
接下來,我們使用讓用戶輸入?yún)?shù)值,然后進(jìn)行傳參到url地址里面的word和queryWord參數(shù),
那么word和queryWord參數(shù),url地址里面就不能有了值了,使用{}被傳參,后面使用format函數(shù)對輸入的參數(shù)進(jìn)行傳參{},最后形成我們需要的網(wǎng)址
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) 打開網(wǎng)址就是你輸入的內(nèi)容
下一步我們要對請求頭進(jìn)行偽裝,防止被服務(wù)器識別為爬蟲程序
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ā)送請求并打印源碼
if not os.path.exists(files): #假如沒有文件執(zhí)行以下代碼: os.makedirs(files) #有文件夾則覆蓋,沒有則創(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ā)送請求
i=1 #計數(shù) for a in zhengze: #遍歷刷選后的網(wǎng)址 get_image(a,i) #將遍歷后的url地址傳到get-image這個函數(shù) i+=1 #每執(zhí)行一次加1 print(a) #打印地址 response=requests.get(url=a,headers=headers).content #獲取二進(jìn)制文件
設(shè)置保存類型及保存位置
file=files+word+str(i)+'張.jpg' #設(shè)置 文件夾 路徑+文件名以及類型 (完整地址) with open(file,'wb') as f: #寫二級制文件類型,并修改變量名 f.write(response) #把獲取到的二進(jìn)制文件寫入 print(word+str(i)+'張.jpg''保存成功') #提示保存成功
那么接下來奉上完整源碼:
import re #篩選url import requests #請求 import os #創(chuàng)建文件夾 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) #創(chuàng)建文件夾路徑 if not os.path.exists(files): #假如沒有文件執(zhí)行以下代碼: os.makedirs(files) #有文件夾則覆蓋,沒有則創(chuàng)建 req=requests.get(url=url,headers=headers).text #獲取源碼 res='"thumbURL":"(.*?)"' #正則式 zhengze=re.findall(res,req) #篩選 i=1 #計數(shù) for a in zhengze: #遍歷刷選后的網(wǎng)址 get_image(a,i) #將遍歷后的url地址傳到get-image這個函數(shù) i+=1 #每執(zhí)行一次加1 print(a) #打印地址 response=requests.get(url=a,headers=headers).content #獲取二進(jìn)制文件 file=files+word+str(i)+'張.jpg' #設(shè)置 文件夾 路徑+文件名以及類型 (完整地址) with open(file,'wb') as f: #寫二級制文件類型,并修改變量名 f.write(response) #把獲取到的二進(jìn)制文件寫入 print(word+str(i)+'張.jpg''保存成功') #提示保存成功
我們來看看運行結(jié)果怎么樣:
可以看到我搜索的是柴犬,對源碼中的每個圖片鏈接進(jìn)行發(fā)送并保存。
那我保存的圖片是否是柴犬呢?我們看看吧:
可以看到保存的就是柴犬圖片并且創(chuàng)建了一個文件夾!
到此這篇關(guān)于python做圖片搜索引擎并保存到本地詳情的文章就介紹到這了,更多相關(guān)python圖片搜索引擎內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中使用tarfile壓縮、解壓tar歸檔文件示例
這篇文章主要介紹了Python中使用tarfile壓縮、解壓tar歸檔文件示例,本文直接給出解壓和壓縮代碼示例,需要的朋友可以參考下2015-04-04