【Python】urllib爬取动漫图片
首先附上需要爬取圖片的網站,應該算是個冷門網站,夠練手用的了,我的博客圖片大部分來自于這里
二次元圖片網站
篩選src里的數(shù)據(jù)
用par =r’<img src="[^"]+.jpg">'可以篩選出帶有里面的內容
html='dasdas <img src="Hello.jpg">adasdassdasdasd<img src="Hello123.jpg">' par =r'<img src="[^"]+\.jpg">' html=re.findall(par,html)篩選網頁中src數(shù)據(jù)
切記:<img后的">“絕對不可加上,否則無法匹配,只需要寫上前一部分即可
par =r’<img class=“pic-large” src=”(.*?)"
封裝函數(shù)后的爬取單個網頁圖片集代碼:
import urllib.request import re #成功爬取當前頁面所有圖片地址def open_url(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',}response =urllib.request.Request(url = url ,headers = headers)webPage = urllib.request.urlopen(response)html=webPage.read()html=html.decode("utf-8")return htmldef get_img(html):par =r'<img class="pic-large" src="(.*?)"'html=re.findall(par,html)for each in html:print(each)response =urllib.request.urlopen(each)cat_img =response.read()with open('cat_200_300.jpg','wb') as f:f.write(cat_img)if __name__ == '__main__':url="http://www.win4000.com/wallpaper_detail_160820_3.html"get_img(open_url(url))開始批量爬圖
首先來分析下我們爬取的網站:爬取的二次元網站
分析它的url:
1、這里總共八張圖片,第一張的地址后綴沒有_01,第二張到第八章都有2-8的后綴,所以分兩部分爬
2、爬首頁
爬后面七張圖片
下面貼出代碼:
import urllib.request import re #成功爬取當前頁面所有圖片地址def open_url(url):response =urllib.request.urlopen(url)html=response.read()html=html.decode("utf-8")return htmldef get_img(html):par =r'<img class="pic-large" src="(.*?)"'html=re.findall(par,html)for each in html:print(each)filename = each.split("/")[-1]urllib.request.urlretrieve(each,filename,None)if __name__ == '__main__':url="http://www.win4000.com/wallpaper_detail_160877.html"get_img(open_url(url))for num in range(2,9):url="http://www.win4000.com/wallpaper_detail_160877_%d"%(num)html=".html"text=url+htmlprint(text)get_img(open_url(text))可一次性爬取八張圖,后續(xù)只要更換該網址的其他界面即可
全部是1920*1080的高清照片
(以前爬過百度搜狗圖片,質量太差)
所以你說我博客上的動漫圖片哪來的,這就是答案
用open的方法可以在指定文件夾(同等目錄)放入相應文件
f=open("hello/tello.jpg","w") constant="i love you" f.write(constant) f.close() #可以寫入任何硬盤當中終極封裝完成后的代碼
(你只需要輸入它的首頁地址即可)
import urllib.request import re #成功爬取當前頁面所有圖片地址def open_url(url):response =urllib.request.urlopen(url)html=response.read()html=html.decode("utf-8")return htmldef get_img(html):par =r'<img class="pic-large" src="(.*?)"'html=re.findall(par,html)for each in html:print(each)filename = each.split("/")[-1]urllib.request.urlretrieve(each,filename,None)if __name__ == '__main__':while(1):word=input(("請輸入所要圖片的首頁網址:"))url1=word[:-5]url2=".html"url=url1+url2get_img(open_url(url))for num in range(2,9):url=url1+"_"+str(num)html=".html"text=url+htmlprint(text)get_img(open_url(text))這是我第一次完完全全封裝好代碼,自己研究某個網站的一些屬性,到一點點琢磨,終于把那種本來需要機械重復無數(shù)次的操作,變?yōu)楦咝в趾啙嵉拇a。盡管代碼還不夠強健
但是通過自己一點一點完善推敲出來的感覺就是不一樣
加入死循環(huán)后只需重復添加首頁地址即可,看中那個首頁就直接下載下來
完美,改天換別的網站繼續(xù)爬!!!!加油
爬圖一時爽,一直爬圖一直爽!!!!
總結
以上是生活随笔為你收集整理的【Python】urllib爬取动漫图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 达龙云是什么?
- 下一篇: 【Python】字符串和变量拼接的写法