Python爬虫 搜索并下载图片
本文是我學(xué)習(xí)Python爬蟲的筆記,一直想要再學(xué)一門語(yǔ)言來擴(kuò)展自己的知識(shí)面,看了看各種語(yǔ)言主要使用的方向,最后決心還是來搞一搞Python.Python給我的第一印象就是語(yǔ)法簡(jiǎn)潔,格式另類還有各種庫(kù)的支持,就喜歡這么有個(gè)性的語(yǔ)言~為了以后深入的學(xué)習(xí)爬蟲,事先肯定是先把語(yǔ)法學(xué)了一遍,下面是我實(shí)現(xiàn)的一個(gè)小爬蟲,可以通過百度圖庫(kù)利用關(guān)鍵字來搜索圖片并下載~
###工具準(zhǔn)備:
- 不要多想,挑個(gè)IDE吧,我用的是PyCharm(免費(fèi)的~嗯,今年剛剛免費(fèi)的)
- 打開PyCharm的設(shè)置(找找在哪,我都是直接commond+,的,如果你有commond鍵的話)在Project下選擇Project Interpreter然后點(diǎn)擊左下角的加號(hào),在輸入框中輸入requests,收索后安裝,其實(shí)還有很多其他的安裝方法,使用pip,在終端中敲入那些代碼,然后還有什么其他的東西,不過還是這樣比較偷懶(其實(shí)前面的坑我都爬過了)
- Python為最新版,2.7應(yīng)該也沒問題,并未使用Scrapy爬蟲框架,也沒有使用lxml,僅僅使用re正則和requests網(wǎng)絡(luò)請(qǐng)求
re和requests用法
-
re正則
re就是正則,主要是用來解析數(shù)據(jù)的,當(dāng)我們拿到網(wǎng)頁(yè)的數(shù)據(jù)時(shí)需要從中提取處我們想要的數(shù)據(jù),正則匹配就時(shí)其中的一個(gè)方法,至于正則的寫法,這里就不在多講,想看的在這里正則表達(dá)式30分鐘入門教程,而re的常用使用手法可以在我的這篇文章里了解Python爬蟲-re(正則表達(dá)式)模塊常用方法,這里我們主要使用其re.findall("正則表達(dá)式","被匹配數(shù)據(jù)",匹配限制(例如:忽略大小寫))
-
requests網(wǎng)絡(luò)請(qǐng)求
requests的封裝異常的強(qiáng)大,幾乎可以做任何形式的網(wǎng)絡(luò)請(qǐng)求,這里我們只是使用了其最簡(jiǎn)單的get請(qǐng)求requests.get("url",timeout=5),詳細(xì)了解,可以看一下(requests快速入門)
具體的步驟
-
首先是想清楚想要做什么,你想要獲取什么數(shù)據(jù)(沒有目標(biāo)哪來的動(dòng)力啊),這里我們是想要通過百度圖片來后去圖片鏈接及內(nèi)容,我想要搜索關(guān)鍵字,并可以指定搜索的數(shù)據(jù)量,選擇是否保存及保存的路徑~
-
需求有了,就要去分析要爬去的網(wǎng)頁(yè)結(jié)構(gòu)了,看一下我們的數(shù)據(jù)都在哪,我們這次要扒去的圖片來自百度圖片
-
首先進(jìn)入百度圖庫(kù),你所看見的頁(yè)面當(dāng)向下滑動(dòng)的時(shí)候可以不停的刷新,這是一個(gè)動(dòng)態(tài)的網(wǎng)頁(yè),而我們可以選擇更簡(jiǎn)單的方法,就是點(diǎn)擊網(wǎng)頁(yè)上方的傳統(tǒng)翻頁(yè)版本
-
接下來就是我們熟悉的翻頁(yè)界面,你可以點(diǎn)擊第幾頁(yè)來獲取更多的圖片
-
點(diǎn)擊鼠標(biāo)的右鍵可以查看網(wǎng)頁(yè)的源代碼,大概就是這個(gè)樣子的,我們get下來的數(shù)據(jù),就是這個(gè)啦,我們需要在這里面找到各個(gè)圖片的鏈接和下一頁(yè)的鏈接,然而有點(diǎn)懵,這么多的數(shù)據(jù),我們想要的在哪里呢?
-
不著急,我們可以通過瀏覽器的開發(fā)者工具來查看網(wǎng)頁(yè)的元素,我用的是Chrome,打開Developer Tools來查看網(wǎng)頁(yè)樣式,當(dāng)你的鼠標(biāo)從結(jié)構(gòu)表中劃過時(shí)會(huì)實(shí)時(shí)顯示此段代碼所對(duì)應(yīng)的位置區(qū)域,我們可以通過此方法,快速的找到圖片所對(duì)應(yīng)的位置:
找到了一張圖片的路徑和下一頁(yè)的路徑,我們可以在源碼中搜索結(jié)果找到他們的位置,并分析如何書寫正則來獲取信息: -
所有的數(shù)據(jù)都分析完畢了,這個(gè)時(shí)候就要開始寫我們的爬蟲了,看了這么久,竟然一句代碼都沒有:
小結(jié)
** 因?yàn)閷?duì)Python的理解還不是特別的深入,所以代碼比較繁瑣,相比較爬蟲框架Scrapy來說,直接使用reqests和re顯得并不是特別的酷,但是這是學(xué)習(xí)理解爬蟲最好的方式,接下來我會(huì)陸陸續(xù)續(xù)將我學(xué)習(xí)爬蟲框架Scrapy的過程寫下來,有錯(cuò)誤的地方請(qǐng)指正~**
總結(jié)
以上是生活随笔為你收集整理的Python爬虫 搜索并下载图片的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware Data Recovery
- 下一篇: websocket python爬虫_p