所謂下載URL圖片就是指通過(guò)網(wǎng)絡(luò)圖片的URL去用腳本自動(dòng)獲取和下載圖片到本地逞怨。
這里介紹兩種方法,一種需要用到第三方庫(kù)requests福澡,一種直接使用Python自帶的庫(kù)urllib叠赦。
首先找到你要下載的圖片,右鍵獲取圖片地址革砸,比如:
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1547380959618&di=fee3916f5bc2ce10f243785b5930921d&imgtype=0&src=http%3A%2F%2Fi2.hdslb.com%2Fbfs%2Farchive%2F1f2296c7222995552f23b5706db4ee5890464c9e.png
如果使用第三方庫(kù)requests除秀,自行pip安裝后:
# coding: utf8
import requests
def download_img(img_url, api_token):
print (img_url)
header = {"Authorization": "Bearer " + api_token} # 設(shè)置http header,視情況加需要的條目算利,這里的token是用來(lái)鑒權(quán)的一種方式
r = requests.get(img_url, headers=header, stream=True)
print(r.status_code) # 返回狀態(tài)碼
if r.status_code == 200:
open('C:\\Users\\cloudoxou\\Desktop\\img.png', 'wb').write(r.content) # 將內(nèi)容寫入圖片
print("done")
del r
if __name__ == '__main__':
# 下載要的圖片
img_url = "http://www.baidu.com/some_img_url"
api_token = "fklasjfljasdlkfjlasjflasjfljhasdljflsdjflkjsadljfljsda"
download_img(img_url, api_token)
這里是用GET方法來(lái)直接請(qǐng)求圖片URL册踩,URL隨便編的,其中加了一個(gè)header效拭,是為了演示需要鑒權(quán)的情況暂吉,有些網(wǎng)站是需要登錄才能訪問(wèn)的,這里的"Authorization": "Bearer "就是一種鑒權(quán)方式缎患,這里不細(xì)說(shuō)慕的,有其他需要加header的情況,可以參考這種方法加挤渔。
如果想完全利用Python原生庫(kù)實(shí)現(xiàn)
那就需要用到urllib這個(gè)庫(kù)肮街,需要注意的是,在Python 2中判导,這個(gè)庫(kù)叫做urllib2嫉父,相應(yīng)的調(diào)用方法也不同:
Python 3 :
# coding: utf8
import urllib.request
def download_img(img_url, api_token):
header = {"Authorization": "Bearer " + api_token} # 設(shè)置http header
request = urllib.request.Request(img_url, headers=header)
try:
response = urllib.request.urlopen(request)
img_name = "img.png"
filename = "C:\\Users\\cloudoxou\\Desktop\\"+ img_name
if (response.getcode() == 200):
with open(filename, "wb") as f:
f.write(response.read()) # 將內(nèi)容寫入圖片
return filename
except:
return "failed"
if __name__ == '__main__':
# 下載要的圖片
img_url = "http://www.baidu.com/some_img_url"
api_token = "fklasjfljasdlkfjlasjflasjfljhasdljflsdjflkjsadljfljsda"
download_img(img_url, api_token)
Python 2:
# coding: utf8
import urllib2
def download_img(img_url, api_token):
header = {"Authorization": "Bearer " + api_token} # 設(shè)置http header
request = urllib2.Request(img_url, headers=header)
try:
response = urllib2.urlopen(request)
img_name = "img.png"
filename = "C:\\Users\\cloudoxou\\Desktop\\"+ img_name
if (response.getcode() == 200):
with open(filename, "wb") as f:
f.write(response.read()) # 將內(nèi)容寫入圖片
return filename
except:
return "failed"
if __name__ == '__main__':
# 下載要的圖片
img_url = "http://www.baidu.com/some_img_url"
api_token = "fklasjfljasdlkfjlasjflasjfljhasdljflsdjflkjsadljfljsda"
download_img(img_url, api_token)
實(shí)現(xiàn)的功能都是一樣的,只是稍微復(fù)雜一點(diǎn)骡楼。
根據(jù)具體使用場(chǎng)景來(lái)選擇吧熔号。