Python使用BeautifulSoup解析并獲取圖片的實(shí)戰(zhàn)分享
一、前言
在本文我們將以下面的例子帶著大家去看看在實(shí)戰(zhàn)中是如何運(yùn)用的。
目標(biāo)url:https://www.58pic.com/tupian/1272.html
二、數(shù)據(jù)分析
根據(jù)下圖所示,圖片被保存至img標(biāo)簽下,并且class值為lazy。當(dāng)然這個(gè)網(wǎng)站除了lazy的img標(biāo)簽還有其他的(比如:class="lazy-bg-img"
),這個(gè)可以自己想辦法處理一下,如何去獲取所有跟圖片有關(guān)的img標(biāo)簽。
三、數(shù)據(jù)獲取及展示
數(shù)據(jù)獲取
''' 爬蟲(chóng): ? 目標(biāo)網(wǎng)站:https://www.58pic.com/c/27075257 ? 任務(wù)需求:1、抓取第一頁(yè)前36張圖片 2、使用bs4解析 ''' import time ? import requests from bs4 import BeautifulSoup ? ? class Image(object): def __init__(self): self.headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.62' } ? def parse_url(self,url): print('開(kāi)始分析') resp = requests.get(url,headers=self.headers) #print(resp.text) if resp.status_code == 200: soup = BeautifulSoup(resp.text,'lxml') image_list = soup.find_all('img',class_='lazy-bg-img',limit=36) #print(image_list) for data in image_list: title = data.get('alt') # print(title) print(f"開(kāi)始下載 {title}") img_url = 'https:'+data.get('data-original') self.image_save(title,img_url) else: return None ? def image_save(self,title,url): resp = requests.get(url,headers=self.headers) content = resp.content with open('./img/'+title+'.jpg',mode='wb')as f: f.write(content) ? if __name__ == '__main__': t = time.time() url='https://www.58pic.com/tupian/1272.html' image = Image() image.parse_url(url) print("總共耗時(shí):",time.time()-t)
最終效果展示
四、結(jié)語(yǔ)
根據(jù)示例,我們會(huì)發(fā)現(xiàn)通過(guò)bs4解析可以很快速的根據(jù)標(biāo)簽的特殊性得到我們想要的數(shù)據(jù)。但要注意,有時(shí)候我們得到的響應(yīng)內(nèi)容會(huì)與F12打開(kāi)看到的不同,所有在發(fā)現(xiàn)沒(méi)有拿到數(shù)據(jù)的時(shí)候,請(qǐng)考慮我們得到的相應(yīng)內(nèi)容里面究竟是什么樣子的。
到此這篇關(guān)于Python使用BeautifulSoup解析并獲取圖片的實(shí)戰(zhàn)分享的文章就介紹到這了,更多相關(guān)Python BeautifulSoup獲取圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python socket如何實(shí)現(xiàn)服務(wù)端和客戶(hù)端數(shù)據(jù)傳輸(TCP)
這篇文章主要介紹了Python socket如何實(shí)現(xiàn)服務(wù)端和客戶(hù)端數(shù)據(jù)傳輸(TCP),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05python正則表達(dá)式匹配[]中間為任意字符的實(shí)例
今天小編就為大家分享一篇python正則表達(dá)式匹配[]中間為任意字符的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python-pymongo常用查詢(xún)方法含聚合問(wèn)題
這篇文章主要介紹了python-pymongo常用查詢(xún)方法含聚合問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Python練習(xí)之讀取XML節(jié)點(diǎn)和屬性值的方法
這篇文章主要介紹了Python練習(xí)之讀取XML節(jié)點(diǎn)和屬性值的方法,通過(guò)parse函數(shù)可以讀取XML文檔,該函數(shù)返回ElementTree類(lèi)型的對(duì)象,通過(guò)該對(duì)象的iterfind方法可以對(duì)XML中特定節(jié)點(diǎn)進(jìn)行迭代2022-06-06Python for Informatics 第11章 正則表達(dá)式(一)
這篇文章主要介紹了Python for Informatics 第11章 正則表達(dá)式(一)的相關(guān)資料,需要的朋友可以參考下2016-04-04Python3實(shí)現(xiàn)爬取簡(jiǎn)書(shū)首頁(yè)文章標(biāo)題和文章鏈接的方法【測(cè)試可用】
這篇文章主要介紹了Python3實(shí)現(xiàn)爬取簡(jiǎn)書(shū)首頁(yè)文章標(biāo)題和文章鏈接的方法,結(jié)合實(shí)例形式分析了Python3基于urllib及bs4庫(kù)針對(duì)簡(jiǎn)書(shū)網(wǎng)進(jìn)行文章抓取相關(guān)操作技巧,需要的朋友可以參考下2018-12-12