Python爬取網(wǎng)站圖片并保存的實(shí)現(xiàn)示例
先看看結(jié)果吧,去bilibili上拿到的圖片=-=
第一步,導(dǎo)入模塊
import requests from bs4 import BeautifulSoup
requests用來請(qǐng)求html頁(yè)面,BeautifulSoup用來解析html
第二步,獲取目標(biāo)html頁(yè)面
hd = {'user-agent': 'chrome/10'} # 偽裝自己是個(gè)(chrome)瀏覽器=-= def download_all_html(): try: url = 'https://www.bilibili.com/' # 將要爬取網(wǎng)站的地址 request = requests.get(url, timeout=30, headers=hd) # 獲取改網(wǎng)站的信息 request.raise_for_status() # 判斷狀態(tài)碼是否為200,!=200顯然爬取失敗 request.encoding = request.apparent_encoding # 設(shè)置編碼格式 return request.text # 返回html頁(yè)面 except: return ''
第三步,分析網(wǎng)站html構(gòu)造
1、顯示網(wǎng)站html代碼
2、找到圖片位置
3、分析
第四步,直接上代碼注釋夠詳細(xì)=-=
def parse_single_html(html): soup = BeautifulSoup(html, 'html.parser') # 解析html,可以單獨(dú)去了解一下他的使用 divs = soup.find_all('div', class_='card-pic') # 獲取滿足條件的div,find_all(所有) for div in divs: # 瞞住條件的div有多個(gè),我們單獨(dú)獲取 p = div.find('p') # 有源代碼可知,每個(gè)div下都有一個(gè)p標(biāo)簽,存儲(chǔ)圖片的title,獲取p標(biāo)簽 if p == None: continue title = p['title'] # 獲取p標(biāo)簽中的title屬性,用來做圖片的名稱 img = div.find('img')['src'] # 獲取圖片的地址 if img[0:6] != 'https:': # 根據(jù)源代碼發(fā)現(xiàn),有的地址缺少"https:"前綴 img = 'https:' + img # 如果缺少,我們給他添上就行啦,都據(jù)情況而定 response = requests.get(img) # get方法得到圖片地址(有的是post、put)基本是get with open('./Img/{}.png'.format(title), 'wb') as f: # 創(chuàng)建用來保存圖片的.png文件 f.write(response.content) # 注意,'wb'中的b 必不可少??! parse_single_html(download_all_html()) # 最后調(diào)用我們寫的兩個(gè)函數(shù)就行啦,
查看結(jié)果
到此這篇關(guān)于Python爬取網(wǎng)站圖片并保存的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python爬取圖片保存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你一步步利用python實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)貪吃蛇游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06用Python進(jìn)行基礎(chǔ)的函數(shù)式編程的教程
這篇文章主要介紹了用Python進(jìn)行基礎(chǔ)的函數(shù)式編程的教程,除了面向?qū)ο缶幊桃馔?、Python還可以進(jìn)行簡(jiǎn)單的不依賴外部變量的函數(shù)式編程,本文介紹了其中的一些基礎(chǔ),需要的朋友可以參考下2015-03-03Python干貨實(shí)戰(zhàn)之八音符醬小游戲全過程詳解
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)一個(gè)八音符醬小游戲,大家可以在過程中查缺補(bǔ)漏,提升水平2021-10-10Python @property及getter setter原理詳解
這篇文章主要介紹了Python @property及getter setter原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03python檢測(cè)服務(wù)器端口代碼實(shí)例
這篇文章主要介紹了python檢測(cè)服務(wù)器端口代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python使用matplotlib和pandas實(shí)現(xiàn)的畫圖操作【經(jīng)典示例】
這篇文章主要介紹了Python使用matplotlib和pandas實(shí)現(xiàn)的畫圖操作,結(jié)合實(shí)例形式分析了Python基于matplotlib和pandas的數(shù)值運(yùn)算與圖形顯示操作相關(guān)實(shí)現(xiàn)技巧,并對(duì)部分代碼的圖形顯示進(jìn)行了顯示效果測(cè)試,需要的朋友可以參考下2018-06-06Pandas使用query()優(yōu)雅的查詢實(shí)例
本文主要介紹了Pandas使用query()優(yōu)雅的查詢實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01