python3 requests庫實(shí)現(xiàn)多圖片爬取教程
最近對爬蟲比較感興趣,所以就學(xué)了一下,看人家都在網(wǎng)上爬取那么多美女圖片養(yǎng)眼,我也迫不及待的試了一下,不多說,切入正題。
其實(shí)爬取圖片和你下載圖片是一個(gè)樣子的,都是操作鏈接,也就是url,所以當(dāng)我們確定要爬取的東西后就要開始尋找url了,所以先打開百度圖片搜一下
然后使用瀏覽器F12進(jìn)入開發(fā)者模式,或者右鍵檢查元素
注意看xhr,點(diǎn)開觀察有什么不一樣的(如果沒有xhr就在網(wǎng)頁下滑)
第一個(gè)是這樣的
第二個(gè)是這樣的
注意看,pn是不是是30的倍數(shù),而此時(shí)網(wǎng)頁圖片的數(shù)量也在增多,發(fā)現(xiàn)了這個(gè),進(jìn)url看一下,首先看原網(wǎng)頁源碼
view-source:http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111121&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E7%BE%8E%E5%A5%B3&oq=%E7%BE%8E%E5%A5%B3&rsp=-1
再看看兩個(gè)Requests URL的頁面,發(fā)現(xiàn)都是這樣的
不用管他,找我們要的信息,ObjURL,"ObjURL":"http:\/\/image.tianjimedia.com\/uploadimages\/2015\/131\/34\/545szi3x5s84_680x500.jpg"
就是這個(gè),好,現(xiàn)在東西都找到在哪了,寫程序咯
import re import requests import os name=input('輸入文件夾名稱:') robot='C:/Users/lenovo/Desktop/'+name+'/' kv={'user-agent':'mozilla/5.0'} #獲取url對應(yīng)的源碼頁面 def getHTMLText(url): try: r=requests.get(url,timeout=30,headers=kv) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: return '' #解析url源碼頁面 def parserHTML(html): #正則表達(dá)式為獲取ObjURL pattern=r'"ObjURL":"(.*?)"' reg=re.compile(pattern) urls=re.findall(reg,html) return urls #下載圖片 def download(List): for url in List: try: path=robot+url.split('/')[-1] url=url.replace('\\','') r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding if not os.path.exists(robot): os.makedirs(robot) if not os.path.exists(path): with open(path,'wb') as f: f.write(r.content) f.close() print(path+' 文件保存成功') else: print('文件已經(jīng)存在') except: continue #通過Requests URL請求到更多的url源碼頁面 def getmoreurl(num,word): ur=[] url=r'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={word}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word={word}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn={pn}&rn=30' for x in range(1,num+1): #word為搜索關(guān)鍵詞,num為想獲取的頁面數(shù)量 u=url.format(word=word,pn=30*x) ur.append(u) return ur def main(): n=int(input('輸入想下載多少張圖片(n*30):')) word=input('輸入想下載的圖片:') #初始頁面url url='http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1499773676062_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word={word}'.format(word=word) html=getHTMLText(url) urls=parserHTML(html) download(urls) #下面操作獲取的更多頁面圖片 url1=getmoreurl(n,word) for i in range(n): html1=getHTMLText(url1[i]) urls1=parserHTML(html1) download(urls1) main()
然后試一試效果
我知道你們會原諒我的
以上這篇python3 requests庫實(shí)現(xiàn)多圖片爬取教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python后臺開發(fā)Django會話控制的實(shí)現(xiàn)
這篇文章主要介紹了Python后臺開發(fā)Django會話控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Anaconda使用IDLE的實(shí)現(xiàn)示例
這篇文章主要介紹了Anaconda使用IDLE的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09windows下安裝Python虛擬環(huán)境virtualenvwrapper-win
這篇文章主要介紹了windows下安裝Python虛擬環(huán)境virtualenvwrapper-win,內(nèi)容超簡單,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06python實(shí)現(xiàn)人臉檢測的簡單實(shí)例
這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)人臉檢測的相關(guān)資料,OpenCV?可以使用機(jī)器學(xué)習(xí)算法搜索圖像中的人臉,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù)示例
這篇文章主要介紹了Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù),涉及Python數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-09-09python 基于pygame實(shí)現(xiàn)俄羅斯方塊
這篇文章主要介紹了python 基于pygame實(shí)現(xiàn)俄羅斯方塊的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03python?Pandas之DataFrame索引及選取數(shù)據(jù)
這篇文章主要介紹了python?Pandas之DataFrame索引及選取數(shù)據(jù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07python實(shí)現(xiàn)遠(yuǎn)程通過網(wǎng)絡(luò)郵件控制計(jì)算機(jī)重啟或關(guān)機(jī)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)遠(yuǎn)程通過網(wǎng)絡(luò)郵件控制計(jì)算機(jī)重啟或關(guān)機(jī),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02