urllib下載圖片 urllib3下載圖片 Urllib下載圖片 1 from urllib import request 2 import re 3 import os 4 5 # 妹子圖首頁 下載首頁的幾張 6 url = 'https://www.mzitu.com' 7 # Request ...
- urllib下載圖片
- urllib3下載圖片
Urllib下載圖片
1 from urllib import request 2 import re 3 import os 4 5 # 妹子圖首頁 下載首頁的幾張 6 url = 'https://www.mzitu.com' 7 # Request對象添加請求頭方法一:數據為字典類型 8 headers = { 9 'User-Agent': 'Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36 ' 10 } 11 # 創建Request實例 將url和請求頭傳入 12 req = request.Request(url, headers=headers) 13 14 # 發起連接,返回的是一個對象,不使用代理 15 data = request.urlopen(req) 16 17 # 用read()方法,讀取返回對象中的內容,取出每張圖片的url 18 img_urls = re.findall("data-original='(.*?)'", data.read().decode()) 19 # 以數字給圖片命名 20 name = 1 21 # 根據每張圖片的url迴圈下載 22 for img_url in img_urls: 23 # 每張圖片的url 24 print(img_url) 25 # 創建新的Request對象,將url傳入 26 req_img = request.Request(url=img_url) 27 # Request對象添加請求頭方法二:數據為元組類型 28 req_img.add_header('Referer', url) 29 img_data = request.urlopen(req_img) 30 # 判斷是否存在這個目錄、是否創建過一次 31 if name == 1 and not os.path.exists('urllib_img_test'): 32 os.mkdir('urllib_img_test') 33 # 判斷是否第一次進入文件夾 34 if name == 1: 35 # 進入創建的文件夾 36 os.chdir('urllib_img_test') 37 img_name = str(name) + '.jpg' 38 # 保存圖片 39 with open(img_name, 'wb') as f: 40 f.write(img_data.read()) 41 name += 1Urllib下載圖片
Urllib3下載圖片
1 import urllib3 2 import re 3 import time 4 import os 5 6 # 判斷文件夾是否存在,不存在就創建 7 if not os.path.exists('urllib3_img_test'): 8 os.mkdir('urllib3_img_test') 9 # 進入文件夾 10 os.chdir('urllib3_img_test') 11 12 # 妹子圖首頁 下載首頁幾個主題裡面的所有圖片 13 url = 'https://www.mzitu.com' 14 # 禁用警告 15 urllib3.disable_warnings() 16 req = urllib3.PoolManager() 17 # 添加請求頭 18 headers = { 19 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130328 Firefox/21.0' 20 } 21 # 發起請求 22 res = req.request('get', url, headers=headers) 23 # 取出數據 24 datas = re.findall('<li><a href=.*</li>',res.data.decode()) 25 26 for data in datas: 27 # 進入各個主題的url 取出的兩個url是一樣的,選一個就行了 28 type_imgs = re.findall('href="(.*?)"',data)[0] 29 # 主題的標題,取出來做文件夾名稱 30 type_name = re.findall(" alt='(.*?)'",data)[0] 31 # 判斷標題里是否有+,加斜桿轉義,不影響正則判斷 32 if '+' in type_name: 33 type_name = type_name.replace('+', '\+') 34 print(type_name,type_imgs) 35 # 進入各個主題,下載主題里的所有圖片 36 type_data = req.request('get',type_imgs,headers=headers).data.decode() 37 # 圖片的url 38 url_img = re.findall('{}.*" ><img src="(.*?)".*{}'.format(type_imgs, type_name), type_data) 39 # 每個主題的圖片數量 40 num = int(re.findall('上一組.*<span>(.*)</span>.*下一頁', type_data)[0]) 41 for i in range(1, num + 1): 42 # 每張圖片的url 在主題url後面加數字 43 url_img = type_imgs + '/' + str(i) 44 print(url_img) 45 # 對每張圖片的url發起請求 46 temp_url = req.request('get', url_img, headers=headers).data.decode() 47 # 每張圖片的url 48 urls_img = re.findall('{}.*src="(.*?)".*{}'.format('https://www.mzitu.com', type_name), temp_url)[0] 49 print(urls_img) 50 # 請求頭添加 referer 51 headers = { 52 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130328 Firefox/21.0', 53 'Referer': url_img 54 } 55 # 獲得圖片的內容,保存到本地 56 img_content = req.request('get', urls_img, headers=headers).data 57 # 判斷標題里是否有斜桿,有就去掉 58 if '\\' in type_name: 59 type_name = type_name.replace('\\','') 60 # 判斷文件夾是否存在,不存在就創建 61 if i ==1 and not os.path.exists(type_name): 62 os.mkdir(type_name) 63 # 進入文件夾 64 os.chdir(type_name) 65 img_name = str(i) +'.jpg' 66 with open(img_name, 'wb') as f: 67 f.write(img_content) 68 time.sleep(0.2) 69 # 返回上一級菜單創建新的文件夾下載其它主題的圖片 70 os.chdir('..') 71 time.sleep(0.2)Urllib3下載圖片