详细分析如何利用python批量爬取百度图片
????這篇文章主要寫的是利用python網(wǎng)絡(luò)爬蟲批量來爬取百度圖片并保存到文件夾中。
首先我們打開百度圖片這個(gè)網(wǎng)頁:https://image.baidu.com/
我們現(xiàn)在隨便搜一個(gè)類型的圖片,比如小狗,就可以看見很多可可愛的小狗圖片了:
然后鼠標(biāo)右擊—點(diǎn)擊檢查—點(diǎn)Network—按Ctrl+R,下滑圖片、觀察Fetch/XHR
我們可以看見不同頁中URL的這三個(gè)地方發(fā)生了變化
其實(shí),由經(jīng)驗(yàn)可知,第三個(gè)變化的地方可以不用管他,至于第二個(gè)變化的地方,你多看幾個(gè)就會(huì)發(fā)現(xiàn),似乎并沒有什么規(guī)律,反正我是沒有發(fā)現(xiàn)什么規(guī)律的,然后重點(diǎn)就是第一個(gè)變化的地方,我們可以看出,pn是以30為等差遞增的。
在請(qǐng)求頭下面有一個(gè)有關(guān)url字符串參數(shù):
全部參數(shù)為:
多觀察幾頁的字符串參數(shù),我們可以推測:
①word、queryWord是與我們搜索的圖片類型有關(guān)
②pn與第幾張圖片有關(guān)
③logid、gsm好像是隨機(jī)的,到時(shí)候設(shè)為空(僅僅是我認(rèn)為)
至于其他的參數(shù),都是沒有變的
所以代碼如下,可以適當(dāng)修改其中不必要的東西:
import time import requests import json import urllibdef Image(word,page,path):n = 0pn = 1 #pn表示從第幾張圖片獲取,百度圖片滑動(dòng)時(shí)一次性顯示30張for i in range(1,page):url = 'https://image.baidu.com/search/acjson?'param = {'tn': 'resultjson_com','logid': '','ipn': 'rj','ct': '201326592','is': '','fp': 'result','fr': '','word': word, #圖片類型'queryWord': word,'cl': '2','lm': '-1','ie': 'utf-8','oe': 'utf-8','adpicid': '','st': '-1','z':'' ,'ic':'0' ,'hd': '','latest': '','copyright': '','s':'' ,'se':'' ,'tab': '','width': '','height': '','face': '0','istype': '2','qc': '','nc': '1','expermode': '','nojc': '','isAsync': '','pn': pn,#從第幾張圖片開始'rn': '30','gsm': '',}jpgs_url=[]names=[]jpgs=requests.get(url=url,headers=header,params=param)jpg=json.loads(jpgs.text)jpg=jpg['data']del jpg[-1]for jd in jpg:jpgs_url.append(jd['thumbURL'])names.append(jd['fromPageTitleEnc'])time.sleep(1)for (jpg_url,name) in zip(jpgs_url,names):try:urllib.request.urlretrieve(jpg_url,path+str(name)+'.jpg')n+=1print("正在下載第"+str(n)+"張圖片!")except Exception:continuepn+=29if __name__ == '__main__': header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}word=input('請(qǐng)輸入要爬取的圖片類型(比如風(fēng)景、動(dòng)物等):')page = int(input('請(qǐng)輸入要爬取多少頁:'))+1 path=input('請(qǐng)輸入存儲(chǔ)路徑:').replace('\\','/') #路徑里面需要用 / 而不是 \if path[:-1] != '/': #有時(shí)候在輸入路徑的時(shí)候,末尾會(huì)少一個(gè) / ,這時(shí)候會(huì)保存到上一級(jí)目錄里面,怪尷尬的path=path+'/'Image(word,page,path)print('全部下載完成!')來看看爬取結(jié)果:
爬取狗狗圖片,保存到 D:\Python爬蟲\狗
運(yùn)行過程
保存結(jié)果:
因?yàn)樽罱紊狭吮缐娜?#xff0c;所以我也想爬爬芽衣,嘿嘿[壞笑]
來康康圖片吧[期待的搓搓手]
看到文件夾中的圖片,直呼完美,快流鼻血了!!!
總結(jié)
以上是生活随笔為你收集整理的详细分析如何利用python批量爬取百度图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCV 例程200篇】16. 不
- 下一篇: 使用统计异常消除滤波器来消除异常