python - 怎么用爬蟲(chóng)批量抓取網(wǎng)頁(yè)中的圖片?
問(wèn)題描述
如圖,通過(guò)network查看加載圖片,要一張一張右鍵保存很麻煩,有沒(méi)有辦法寫(xiě)個(gè)爬蟲(chóng)批量抓取這里的圖片》?
問(wèn)題解答
回答1:這個(gè)需求, 如果你會(huì)爬蟲(chóng)其實(shí)很簡(jiǎn)單, 不外乎幾個(gè)步驟:
首頁(yè)或者有圖片的頁(yè)面, 通過(guò)正則或者其他框架, 獲取圖片的url
通過(guò)requests庫(kù)或者urllib庫(kù), 訪問(wèn)上面圖片url的地址
以二進(jìn)制的形式, 寫(xiě)入本地硬盤(pán)
參考代碼:
import re, requestsr = requests.get('http://...頁(yè)面地址..')p = re.compile(r’相應(yīng)的正則表達(dá)式匹配’)image = p.findall(r.text)[0] # 通過(guò)正則獲取所有圖片的urlir = requests.get(image) # 訪問(wèn)圖片的地址sz = open(’logo.jpg’, ’wb’).write(ir.content) # 將其內(nèi)容寫(xiě)入本地print(’logo.jpg’, sz,’bytes’)
更多詳情, 可以參考學(xué)習(xí)requests官方文檔: requests文檔
回答2:可以的,爬蟲(chóng)五個(gè)部分:調(diào)度程序url去重下載器網(wǎng)頁(yè)解析數(shù)據(jù)存儲(chǔ)對(duì)于下載圖片的思路是:獲取圖片所在網(wǎng)頁(yè)內(nèi)容,解析img標(biāo)簽,得到圖片地址,然后便利圖片網(wǎng)址,下載每張圖片,將下載過(guò)的圖片地址保存在布隆過(guò)濾器中,避免重復(fù)下載,每次下載一張圖片時(shí),通過(guò)網(wǎng)址檢查是否下載過(guò),當(dāng)圖片下載到本地后,可以將圖片路徑保存在數(shù)據(jù)庫(kù)中,圖片文件保存在文件夾中,或者直接將圖片保存在數(shù)據(jù)庫(kù)中。python使用request+beautifulsoup4java使用jsoup
回答3:如果多個(gè)網(wǎng)站或者一個(gè)網(wǎng)站需要爬到很深的情況下,樓上的方式直接遞歸或者深度遍歷就OK
相關(guān)文章:
1. angular.js - angularjs的自定義過(guò)濾器如何給文字加顏色?2. angular.js - angular內(nèi)容過(guò)長(zhǎng)展開(kāi)收起效果3. 關(guān)于docker下的nginx壓力測(cè)試4. docker鏡像push報(bào)錯(cuò)5. 關(guān)于nginx location配置的問(wèn)題,root到底是什么6. linux - openSUSE 上,如何使用 QQ?7. 并發(fā)模型 - python將進(jìn)程池放在裝飾器里為什么不生效也沒(méi)報(bào)錯(cuò)8. 大家好,請(qǐng)問(wèn)在python腳本中怎么用virtualenv激活指定的環(huán)境?9. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?10. linux - 升級(jí)到Python3.6后GDB無(wú)法正常運(yùn)行?
