迫於無聊,又剛好正在學習python,就來記錄一篇關於python爬取圖片連結下載本地的入門文章...
主要用到的模組:
request
和 BeautifulSoup4
開發之前建議先看一下官方給出關於這兩個模組的文件
開發環境:
- python3.6.6
- vscode
- node v8.10
不同的python版本在部分程式碼上可能會有差異,請務必核對好版本...
開發流程解析
第一步:需要通過request獲取頁面的原始碼
response = requests.get(url, headers=header, timeout=30)
複製程式碼
第二步:分析頁面結構
通過上圖發現,他的每一個img標籤的class都是img-responsive lazy image_dta
那麼我們就可以直接通過bs4的find_all屬性將其取出...
datas = soup.find_all(
name="img", attrs={"class": "img-responsive lazy image_dta"})
複製程式碼
因為find_all取出的是一個陣列,那麼我們就需要去進行迴圈讀取每個img標籤
for data in datas:
print("downloading:", data.attrs['data-original'])
request.urlretrieve(
data.attrs['data-original'], downPath+'\%s.jpg' % time.time())
複製程式碼
這邊用的是request.urlretrieve進行資源下載...
需要注意的是,一般來講我們都是去獲取圖片的src屬性,但是由於這個網站使用了圖片延時載入,所以我們直接獲取src的話就取到他預設的圖片,這邊我們可以看到img的data-original屬性是包含了圖片的路徑的,所以我們就直接取data-original就可以了....
最後main方法執行...
if __name__ == '__main__':
pool = ThreadPool(4)
urls = [
"http://www.doutula.com/photo/list/?page={}".format(str(i)) for i in range(1, 3)]
pool.map(getImg, urls)
pool.close()
pool.join()
複製程式碼
這邊運用了線城池進行簡單的程式碼優化,後面會加入代理池和佇列進行優化。
程式碼地址:python爬取表情包並下載到本地
如果程式碼有幫助到您,記得點個start哦~~~