日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

50行代碼極速下載無版權(quán)高清圖

 heii2 2019-07-11

來源:Python知識圈  鏈接:

https://mp.weixin.qq.com/s/hRnRH7EL5enstoQ-iqr2uQ

 閱讀文本大概需要 3 分鐘。

前言

生活或者工作中,不管是寫文章、公司 UI 交互圖還是廣告圖等等都需要用到圖片,圖片的優(yōu)點和重要性自不用說。

圖片我們可不能隨便從網(wǎng)上搜索來用,我們得注意圖片的版權(quán)。我一般是在無版權(quán)的網(wǎng)站上找圖片,比如我常用的 pixabay 網(wǎng)站,打開網(wǎng)站,搜索我們需要的主題圖片,結(jié)果,加載大半天,還是下面這樣的。。。

這大大的影響我們的效率和心情啊,因為這網(wǎng)站的服務(wù)器是國外的,所有才會這么慢。

作為一個追求工作和生活高效率的 Pythoner,這個實在忍不了。

于是我用決定用 Python 寫一個簡單的爬蟲,把不同主題的圖片分別保存在本地,下次需要用圖的時候直接在本地瀏覽選擇就行了。

頁面元素分析

瀏覽器中 F12 調(diào)試,我們看看單個圖片的 url 鏈接??,大部分的圖片 url 都在 「data-lazy-srcset」 屬性里。

正則提取元素

我們用正則表達(dá)式提取出一個頁面所有的圖片 url,比如我提取第 2 頁所有的圖片 url,并把這些 url 放在列表里,方便接下來調(diào)用后下載圖片。

def get_urls(url):
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
html = requests.get(url, headers=headers).text
urls = re.compile(r'data-lazy-srcset='(.*?)'')
res = re.findall(urls, html)
img_urls = []
for u in res:
img_url = str(u).split(',')[0].strip(' 1x')
img_urls.append(img_url)
return img_urls

創(chuàng)建目錄

我們給不同的主題圖片主動新建文件夾保存,包括「素材圖片」文件夾前面的路徑大家換成自己路徑,我用的 Mac 電腦路徑和 windows 系統(tǒng)路徑不同,大家根據(jù)情況替換。后面的 direcory 參數(shù)是我們輸入的查詢圖片的關(guān)鍵字,根據(jù)我們輸入的關(guān)鍵字來創(chuàng)建主題文件夾儲存下載的圖片。

# 創(chuàng)建不同的文件夾儲存圖片
def mkdir(directory):
isExists = os.path.exists(r'/Users/brucepk/Pictures/素材圖片/{}'.format(directory))
if not isExists:
print('創(chuàng)建 %s 目錄' % directory)
os.makedirs(r'/Users/brucepk/Pictures/素材圖片/{}'.format(directory)) # 創(chuàng)建目錄
os.chdir(r'/Users/brucepk/Pictures/素材圖片/{}'.format(directory)) # 切換到創(chuàng)建的文件夾
return True
else:
print('目錄 %s 已存在,即將保存!' % directory)
return False

下載圖片

我們把提取出來的圖片下載下來,open 后面的 wb+ 表示以二進(jìn)制讀寫模式打開。

def download(filename, url):
with open(filename, 'wb+') as f:
try:
f.write(requests.get(url).content)
print('成功下載圖片:', filename)
except:
print('下載失敗:', filename)

最后,pk 哥用 input 方法讓大家自行輸入查詢的英文關(guān)鍵字,「pagi」后的參數(shù)是頁面,我用 for 循環(huán)讓它爬取前 5 頁。

if __name__ == '__main__':
directory = input('輸出你要下載的圖片的英文關(guān)鍵字:')
for num in range(1, 6):
search_url = 'https:///images/search/{}/?pagi={}'.format(directory, num) # 拼接每頁的鏈接
mkdir(directory)
for url in get_urls(search_url):
filename = r'/Users/brucepk/Pictures/素材圖片/{}/'.format(directory) + url.split('/')[-1] # 圖片的路徑
download(filename, url)
print('第%s頁已爬取' % num)
time.sleep(int(format(random.randint(3, 10)))) # 隨機(jī)等待時間

運行代碼,pk 哥輸入英文關(guān)鍵字后回車,效果如下。

效果展示

把自己常用的主題圖都下載在本地,以后找圖再也不用等了,爽歪歪。

本文全部源碼: 

https://github.com/Brucepk/download-no-copyright-image/blob/master/pixabay.py題圖:Pixabay

(完)

看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多人

關(guān)注「Python那些事」,做全棧開發(fā)工程師

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多