python 鬥圖圖片爬蟲
阿新 • • 發佈:2018-06-13
創建文件夾 下載 exceptio 文件 div 內容 urn all pad
搗鼓了三小時,有一些小Bug,望大佬指導
廢話不說,直接上代碼:
#!/usr/bin/python3 # -*- coding:UTF-8 -*- import os,re,requests from urllib import request,parse class Doutu_api(object): def __init__(self): self.api_html = r‘http://www.doutula.com/search?keyword=%s‘ self.headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36‘ ‘(KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36‘} self.path = os.path.dirname(os.path.realpath(__file__))+‘\\temp‘ def make_path(self,path=‘‘):#返回假為已創建,否則創建新文件夾 self.path = self.path+‘\\‘+path if os.path.exists(self.path): # 判斷文件夾是否存在return False else: os.mkdir(self.path) # 創建文件夾 return True def get_img_html(self,html): self.make_path(path=html) html = self.api_html%parse.quote(html) pattern = re.compile(u‘<a.*?class="col-xs-6 col-md-2".*?href="(.*?)".*?style="padding:5px;">.*?</a>‘,re.S) pattern_img = re.compile(u‘<td>.*?<img.*?src="(.*?)".*?alt="(.*?)".*?onerror=".*?">.*?</td>‘,re.S) try: req = request.Request(html, headers=self.headers) imgs = request.urlopen(req) imgs = imgs.read().decode(‘utf-8‘) imgs = re.findall(pattern, imgs) for img in imgs: req = request.Request(img, headers=self.headers) imgurl = request.urlopen(req).read().decode(‘utf-8‘) imgurl =re.findall(pattern_img, imgurl) with open(self.path+‘\\{}.png‘.format(imgurl[0][1].replace(‘/‘,‘-‘)), ‘wb‘) as file: response = requests.get(imgurl[0][0]).content # 下載圖片 file.write(response) # 讀取圖片 print(‘已完成下載,圖片地址:‘,self.path) except Exception as e: print(e) return None doutu = Doutu_api() doutu.get_img_html(input(‘鬥圖內容關鍵字:‘))
測試成功
python 鬥圖圖片爬蟲