首页 > Web开发 > 详细

使用Urllib下载图片

时间:2019-11-02 23:23:54      阅读:158      评论:0      收藏:0      [点我收藏+]
  1. urllib下载图片
  2. 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 += 1
Urllib下载图片

 

 

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下载图片

 

 

使用Urllib下载图片

原文:https://www.cnblogs.com/jiyu-hlzy/p/11784293.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!