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圖片搜索引擎內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: