Python爬蟲爬取網(wǎng)站圖片
此次python3
主要用requests
,解析圖片網(wǎng)址主要用beautiful soup
,可以基本完成爬取圖片功能,
爬蟲這個(gè)當(dāng)然大多數(shù)人入門都是爬美女圖片,我當(dāng)然也不落俗套,首先也是隨便找了個(gè)網(wǎng)址爬美女圖片
from bs4 import BeautifulSoup import requests ? ? if __name__=='__main__': ? ? url='http://www.27270.com/tag/649.html' ? ? headers = { ? ? ? ? "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"} ? ? req = requests.get(url=url, headers=headers) ? ? req=requests.get(url=url,headers=headers) ? ? req.encoding = 'gb2312' ? ? html=req.text ? ? bf=BeautifulSoup(html,'lxml') ? ? targets_url=bf.find('div',class_='w1200 oh').find_all('a',target='_blank') ? ? for each in targets_url: ? ? ? ? img_req=requests.get(url=each.get('href'),headers=headers) ? ? ? ? img_req.encoding = 'gb2312' ? ? ? ? html = img_req.text ? ? ? ? bf = BeautifulSoup(html, 'lxml') ? ? ? ? img_url = bf.find('div', class_='articleV4Body').find('img')['src'] ? ? ? ? name=each.img.get('alt')+'.jpg' ? ? ? ? path=r'C:\Users\asus\Desktop\新建文件夾' ? ? ? ? file_name = path + '\\' + name ? ? ? ? try: ? ? ? ? ? ? req1=requests.get(img_url,headers=headers) ? ? ? ? ? ? f=open(file_name,'wb') ? ? ? ? ? ? f.write(req1.content) ? ? ? ? ? ? f.close() ? ? ? ? except: ? ? ? ? ? ? print("some error")
期間遇到的一個(gè)情況是,它到訪問(wèn)img_url
的時(shí)候總報(bào)錯(cuò)連接主機(jī)失敗,我開始以為是網(wǎng)址加了反爬之類的,但是我單獨(dú)拿出來(lái)一個(gè)網(wǎng)址,卻可以很容易的訪問(wèn),百思不得其解,最后咨詢大佬告訴我把img_url
的每一個(gè)都試試看,可能是某一個(gè)網(wǎng)址出了問(wèn)題,找了找果然是有個(gè)叛徒,產(chǎn)生的img_url
中第二個(gè)網(wǎng)址無(wú)法訪問(wèn),怪不得老報(bào)錯(cuò),我應(yīng)該多試幾個(gè)的,一葉障目
我同時(shí)也是個(gè)火影迷,掌握基本方法后準(zhǔn)備試試爬取火影圖片,也是網(wǎng)址找了個(gè)網(wǎng)址:
http://desk.zol.com.cn/dongman/huoyingrenzhe/
可以看到火影的圖片是以圖集的形式儲(chǔ)存的,所以這個(gè)下載就比剛才的稍微多了一點(diǎn)步驟
查看網(wǎng)站源代碼容易發(fā)現(xiàn),圖集的鏈接所在都是class='photo-list-padding'
的li標(biāo)簽里,且鏈接沒有補(bǔ)全
點(diǎn)開其中一個(gè)鏈接, http://desk.zol.com.cn/dongman/huoyingrenzhe/(前面為瀏覽器自動(dòng)補(bǔ)全,在代碼里需要自己補(bǔ)全)
可以看到圖片的下載地址以及打開本圖集下一張圖片的鏈接
了解完網(wǎng)站的圖片構(gòu)造后動(dòng)手寫代碼,我們篩選出圖集的鏈接后,通過(guò)圖集的鏈接找到第一張圖片下載地址和第二張圖片的鏈接,通過(guò)第二張的鏈接找到第二張的下載地址和第三張的鏈接,循環(huán)下去,直到本圖集到底,接著開始第二個(gè)圖集,直到所有圖集下載完畢,代碼如下,為了方便循環(huán),我們集成下載圖片功能為download
函數(shù),解析圖片網(wǎng)址功能為parses_picture
:
from bs4 import BeautifulSoup import requests ? def download(img_url,headers,n): ? ? req = requests.get(img_url, headers=headers) ? ? name = '%s'%n+'='+img_url[-15:] ? ? path = r'C:\Users\asus\Desktop\火影壁紙1' ? ? file_name = path + '\\' + name ? ? f = open(file_name, 'wb') ? ? f.write(req.content) ? ? f.close ? def parses_picture(url,headers,n): ? ? url = r'http://desk.zol.com.cn/' + url ? ? img_req = requests.get(url, headers=headers) ? ? img_req.encoding = 'gb2312' ? ? html = img_req.text ? ? bf = BeautifulSoup(html, 'lxml') ? ? try: ? ? ? ? img_url = bf.find('div', class_='photo').find('img').get('src') ? ? ? ? download(img_url,headers,n) ? ? ? ? url1 = bf.find('div',id='photo-next').a.get('href') ? ? ? ? parses_picture(url1,headers,n) ? ? except: ? ? ? ? print(u'第%s圖片集到頭了'%n) ? if __name__=='__main__': ? ? url='http://desk.zol.com.cn/dongman/huoyingrenzhe/' ? ? headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"} ? ? req = requests.get(url=url, headers=headers) ? ? req=requests.get(url=url,headers=headers) ? ? req.encoding = 'gb2312' ? ? html=req.text ? ? bf=BeautifulSoup(html,'lxml') ? ? targets_url=bf.find_all('li',class_='photo-list-padding') ? ? n=1 ? ? for each in targets_url: ? ? ? ? url = each.a.get('href') ? ? ? ? parses_picture(url,headers,n) ? ? ? ? n=n+1
期間遇到的一個(gè)情況是每次一個(gè)圖集到底的時(shí)候,就會(huì)產(chǎn)生報(bào)錯(cuò),因?yàn)檎也坏较乱粡垐D片的鏈接了,于是我便加上try語(yǔ)句來(lái)捕捉這一報(bào)錯(cuò),讓程序繼續(xù)下去,有了bf果然比正則表達(dá)式簡(jiǎn)單,可以通過(guò)標(biāo)簽屬性很方便的找到想要的信息。
下載情況
到此這篇關(guān)于Python爬蟲爬取網(wǎng)站圖片的文章就介紹到這了,更多相關(guān)Python爬取網(wǎng)站圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python爬蟲:通過(guò)關(guān)鍵字爬取百度圖片
- Python爬蟲爬取一個(gè)網(wǎng)頁(yè)上的圖片地址實(shí)例代碼
- Python爬取網(wǎng)頁(yè)中的圖片(搜狗圖片)詳解
- Python3直接爬取圖片URL并保存示例
- Python使用爬蟲爬取靜態(tài)網(wǎng)頁(yè)圖片的方法詳解
- python3 爬取圖片的實(shí)例代碼
- python實(shí)現(xiàn)爬取百度圖片的方法示例
- python爬蟲爬取圖片的簡(jiǎn)單代碼
- Python 爬蟲批量爬取網(wǎng)頁(yè)圖片保存到本地的實(shí)現(xiàn)代碼
- python爬蟲實(shí)戰(zhàn)項(xiàng)目之爬取pixiv圖片
相關(guān)文章
python+pyqt實(shí)現(xiàn)12306圖片驗(yàn)證效果
這篇文章主要為大家詳細(xì)介紹了python+pyqt實(shí)現(xiàn)12306圖片驗(yàn)證效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10python3注冊(cè)全局熱鍵的實(shí)現(xiàn)
這篇文章主要介紹了python3注冊(cè)全局熱鍵的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Python基于list的append和pop方法實(shí)現(xiàn)堆棧與隊(duì)列功能示例
這篇文章主要介紹了Python基于list的append和pop方法實(shí)現(xiàn)堆棧與隊(duì)列功能,結(jié)合實(shí)例形式分析了Python使用list定義及使用隊(duì)列的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07Python自動(dòng)化辦公之生成PDF報(bào)告詳解
因?yàn)楣ぷ餍枰?jīng)常需要生成很多的PDF報(bào)告給客戶查看產(chǎn)品效果以及過(guò)程的講解,每次都需要按照一定的格式的編寫文檔并生成PDF報(bào)告,這樣重復(fù)性的工作實(shí)在太累。本文就來(lái)用Python實(shí)現(xiàn)自動(dòng)生成PDF報(bào)告吧2023-03-03使用Python實(shí)現(xiàn)視頻轉(zhuǎn)音頻與音頻轉(zhuǎn)文本
這篇文章主要為大家詳細(xì)介紹了使用Python實(shí)現(xiàn)視頻轉(zhuǎn)音頻與音頻轉(zhuǎn)文本的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考一下2024-02-02pycharm 如何縮進(jìn)和SQL亂碼及SQL包含變量
這篇文章主要介紹了pycharm 如何縮進(jìn)和SQL亂碼及SQL包含變量,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07