当前位置:主页 > 查看内容

使用request下载图片

发布时间:2021-05-24 00:00| 位朋友查看

简介:request介绍 Requests建立在世界上下载量最大的Python库urllib3上它令Web请求变得非常简单功能强大且用途广泛。 Requests支持HTTP连接保持和连接池支持使用cookie保持会话支持文件上传支持自动确定响应内容的编码支持国际化的 URL 和 POST 数据自动编码。功……

request介绍

Requests建立在世界上下载量最大的Python库urllib3上,它令Web请求变得非常简单,功能强大且用途广泛。
Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。功能非常全面而且使用方便
Requests可以完成您能想到的所有高级工作,例如:

  • 认证
  • 使用cookie
  • 执行POST,PUT,DELETE等
  • 使用自定义证书
  • 使用会话Session
  • 使用代理

request安装

request的安装非常简单,只需要在cmd中输入 pip install requests 进行安装

request的用法很多,这里介绍怎么用request 根据连接同时下载多个图片

具体代码

from urllib import request
from multiprocessing import Process
def aa(uit):
    name=uit.split('/')[-1]
    pen=request.urlopen(uit)
    q=pen.read()
    with open(name,'wb') as f:
        f.write(q)
if __name__ == '__main__':
    lis=[]
    na=['进程1','进程2','进程3']
    aaa=['https://img0.baidu.com/it/u=3724865004,3598526800&fm=26&fmt=auto&gp=0.jpg','https://img2.baidu.com/it/u=2598714022,2194647539&fm=26&fmt=auto&gp=0.jpg','https://img1.baidu.com/it/u=2016159045,522593296&fm=15&fmt=auto&gp=0.jpg']
    for i in range(0,3):
         a=Process(target=aa,name=str(i),args=(aaa[i],))
         print(f'{a.name}开始运行了')
         a.start()
         lis.append(a)
    print(lis,)
    for a in lis:
        a.join()
    print('主进程id%s'%os.getpid())

首先先要导入,需要用到的是request和设置多进程的Process模块

from urllib import request
from multiprocessing import Process

然后写一个函数,用来处理得到的网址和下载图片

def aa(uit):
    name=uit.split('/')[-1]
    pen=request.urlopen(uit)
    q=pen.read()
    with open(name,'wb') as f:
        f.write(q)

首先用split()方法进行分割,用最后一个作为图片的名字
然后体现request的强大之处,用request.urlopen(uit)就可以对目标网址发出get请求,然后收到网站的响应,返回网站给的数据(自动筛选出数据,去掉响应头等只返回相应正文)
使用read()读取返回的数据将他写入文件中

if __name__ == '__main__':
    lis=[]
    aaa=['https://img0.baidu.com/it/u=3724865004,3598526800&fm=26&fmt=auto&gp=0.jpg','https://img2.baidu.com/it/u=2598714022,2194647539&fm=26&fmt=auto&gp=0.jpg','https://img1.baidu.com/it/u=2016159045,522593296&fm=15&fmt=auto&gp=0.jpg']
    for i in range(0,3):
         a=Process(target=aa,name=str(i),args=(aaa[i],))
         a.start()
         lis.append(a)
    for a in lis:
        a.join()

程序运行时同时运行3个进程一起下载,然后将所有进程都放到一个空的列表中,然后再逐个进行关闭。
下载完再查看下载的目录看看是否下载完成

但是有一些网站会主动屏蔽掉request这个方法,所以现在基本淘汰了这个方法,不过对一些小网站还是可以使用的

;原文链接:https://blog.csdn.net/weixin_46643772/article/details/115528152
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐