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. javascript - 求助關(guān)于call和apply的問(wèn)題,反柯里化2. android - 求 360瀏覽器 百度瀏覽器 搜狗瀏覽器的最新啟動(dòng)類名3. css3 隱藏文本4. java - .jsp頁(yè)面用<%= %>的方式獲取數(shù)據(jù)存在一個(gè)很奇怪的問(wèn)題5. vue.js - vue上傳代碼到git6. java - svn導(dǎo)下來(lái)的項(xiàng)目,web-inf下怎么沒(méi)有l(wèi)ib文件呀?7. css - 移動(dòng)端字體適配問(wèn)題8. javascript - arguments.callee9. css3-translate3d-模糊bug - 為何使用了 css3 translate3d 會(huì)導(dǎo)致顯示模糊?10. javascript - Angular利用 broadcast和 on實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)并且傳遞數(shù)據(jù) 但是跳轉(zhuǎn)后收不到數(shù)據(jù)
