<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們先說一下思路:先對目標網站傳送請求,獲取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''儲存成功') #提示儲存成功
我們來看看執行結果怎麼樣:
可以看到我搜尋的是柴犬,對原始碼中的每個圖片連結進行傳送並儲存。
那我儲存的圖片是否是柴犬呢?我們看看吧:
可以看到儲存的就是柴犬圖片並且建立了一個資料夾!
到此這篇關於python做圖片搜尋引擎並儲存到本地詳情的文章就介紹到這了,更多相關python圖片搜尋引擎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45