小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

16 行 Python 代碼批量抓取高清圖片!

 heii2 2019-07-25

來(lái)自:數(shù)據(jù)分析1480    作者:劉順祥         鏈接:

https://mp.weixin.qq.com/s/lATfMcSpjP9ex5hvSB7gNg


前言

相信在你的工作中可能會(huì)經(jīng)常用到PPT吧,你在PPT制作過(guò)程中有沒有這樣的困惑,就是可以到哪里找到既高清又無(wú)版權(quán)爭(zhēng)議的圖片素材呢?這里強(qiáng)烈推薦ColorHub,這是一個(gè)允許個(gè)人和商業(yè)用途的免費(fèi)圖片網(wǎng)站,真的很贊!從她的主頁(yè)界面來(lái)看,也許你就會(huì)愛上她。

那么,如何將網(wǎng)站中的圖片存儲(chǔ)到本地呢(例如比較關(guān)心跟數(shù)據(jù)相關(guān)的素材)?如果做到了,就可以在沒有網(wǎng)絡(luò)的情況下,隨心所欲的選擇精美圖片制作PPT,隨時(shí)隨地的查看自己的圖片庫(kù)。而本文所要跟大家分享的就是這個(gè)問(wèn)題的解決方案。

爬蟲思路

我們知道,對(duì)于圖片網(wǎng)站的抓取,往往需要經(jīng)過(guò)三層網(wǎng)頁(yè)鏈接,為了能夠直觀地理解這三層鏈接,可以查看下圖:

頂層頁(yè):是指通過(guò)網(wǎng)站主頁(yè)的搜索欄,搜索出感興趣的圖片方向,便進(jìn)入到的圖片列表頁(yè),它的樣子是這樣的:

次層頁(yè):是指點(diǎn)擊圖片列表頁(yè)中的某張圖片,轉(zhuǎn)而對(duì)應(yīng)到的圖片詳情頁(yè),它的樣子是這樣的:

目標(biāo)頁(yè):最后就是為了抓取圖片詳情頁(yè)中的那張高清圖片,而這張圖片在網(wǎng)頁(yè)源代碼中就是一個(gè)圖片鏈接,它的樣子是這樣的:

所以,爬蟲抓取圖片的最終目的就是找到高清圖片所對(duì)應(yīng)的鏈接。接下來(lái)將通過(guò)代碼的介紹,呈現(xiàn)三層鏈接的尋找和請(qǐng)求過(guò)程。代碼的每一行都將對(duì)應(yīng)中文解釋,如果還有其他疑問(wèn),可以在留言區(qū)留言,我會(huì)第一時(shí)間給你答復(fù)。

  1. # 導(dǎo)入第三方包

  2. import requests

  3. from bs4 import BeautifulSoup

  4. import random

  5. import time

  6. from fake_useragent import UserAgent

  7. # 通過(guò)循環(huán)實(shí)現(xiàn)多頁(yè)圖片的抓取

  8. for page in range(1,11):

  9. # 生成頂層圖片列表頁(yè)的鏈接

  10. fst_url = r'https:///search?tag=data&page={}'.format(page)

  11. # 生成UA,用于爬蟲請(qǐng)求頭的設(shè)置

  12. UA = UserAgent()

  13. # 向頂層鏈接發(fā)送請(qǐng)求

  14. fst_response = requests.get(fst_url, headers = {'User-Agent':UA.random})

  15. # 解析頂層鏈接的源代碼

  16. fst_soup = BeautifulSoup(fst_response.text)

  17. # 根據(jù)HTML的標(biāo)記規(guī)則,返回次層圖片詳情頁(yè)的鏈接和圖片名稱

  18. sec_urls = [i.find('a')['href'] for i in fst_soup.findAll(name = 'div', attrs = {'class':'card'})]

  19. pic_names = [i.find('a')['title'] for i in fst_soup.findAll(name = 'div', attrs = {'class':'card'})]

  20. # 對(duì)每一個(gè)次層鏈接做循環(huán)

  21. for sec_url,pic_name in zip(sec_urls,pic_names):

  22. # 生成UA,用于爬蟲請(qǐng)求頭的設(shè)置

  23. UA = UserAgent()

  24. ua = UA.random

  25. # 向次層鏈接發(fā)送請(qǐng)求

  26. sec_response = requests.get(sec_url, headers = {'User-Agent':ua})

  27. # 解析次層鏈接的源代碼

  28. sec_soup = BeautifulSoup(sec_response.text)

  29. # 根據(jù)HTML的標(biāo)記規(guī)則,返回圖片鏈接

  30. pic_url = 'https:' + sec_soup.find('img',{'class':'card-img-top'})['src']

  31. # 對(duì)圖片鏈接發(fā)送請(qǐng)求

  32. pic_response = requests.get(pic_url, headers = {'User-Agent':ua})

  33. # 將二進(jìn)制的圖片數(shù)據(jù)寫入到本地(即存儲(chǔ)圖片到本地)

  34. with open(pic_name+'.jpg', mode = 'wb') as fn:

  35. fn.write(pic_response.content)

  36. # 生成隨機(jī)秒數(shù),用于也沒的停留

  37. seconds = random.uniform(1,3)

  38. time.sleep(seconds)

不難發(fā)現(xiàn),代碼的核心部分就16行,還是很簡(jiǎn)單的吧。還不趕快去測(cè)試一下這里的代碼哦(如果你對(duì)某個(gè)方面感興趣,如商務(wù)、建筑、植物等,通過(guò)搜索,找到頂層頁(yè)鏈接,替換代碼中的fst_url值即可)。

在運(yùn)行完如上代碼后,將會(huì)抓取ColorHub網(wǎng)站中的10頁(yè)圖片,一共包含325張高清圖片,展示如下:

結(jié)語(yǔ)

OK,今天的內(nèi)容就分享到這里,如果你有任何問(wèn)題,歡迎在公眾號(hào)的留言區(qū)域表達(dá)你的疑問(wèn)。同時(shí),也歡迎各位大咖在留言區(qū)分享你們自己的策略,我會(huì)第一時(shí)間將你的留言分享給大家。

(完)

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多