【问题标题】:Saving image after using requests/sessions使用请求/会话后保存图像
【发布时间】:2017-02-11 12:08:13
【问题描述】:

我对如何在使用请求/会话“获取”图像后保存图像感到非常困惑!请注意,urlimg_nameimg_end 都是上面定义的,它们采用静态 URL 并在末尾添加数字以请求与这些数字对应的图像。

s = requests.Session()
s.auth = ('username', 'password')
s.headers.update({'x-test': 'true'})
s.get(url+img_name+img_end, headers={'x-test2': 'true'})

如果我这样做print(s) 我得到<requests.sessions.Session object at 0x036A3710> 这导致我认为我的图像正在下载。但是,如果我执行save_img = Image.open(s) 之类的操作,我会收到Session has no attribute read 的回复。如果有人可以解释如何将我请求的图像保存到一个很棒的文件中,那么我是 Python 新手,这部分没有意义。另外,如果我上面的代码是错误的,我基本上是从http://docs.python-requests.org/en/master/user/advanced/ 复制了这些例子,因为它是值得的。

【问题讨论】:

    标签: python session python-requests


    【解决方案1】:

    <requests.sessions.Session object at 0x036A3710>session 对象 本身在内存中,与图像无关,所以不要让你感到困惑(Python 对象的任何实例在内存中都有地址)。

    get 函数将返回您想要的数据,因此您必须使用变量来存储它:

    data = s.get(url+img_name+img_end, headers={'x-test2': 'true'})
    with open('image', 'wb') as fobj:
        fobj.write(data.content)
    

    【讨论】:

    • 谢谢!这似乎可行,但是,为什么我输出的文件似乎已损坏和/或不包含真实数据?我无法打开图像,但它是 370kb,所以有什么东西吗?
    • 您是否使用正确的文件扩展名保存它,例如open('image.jpg', 'wb')?
    • 是的,我试过 .jpg 和 .png,这两种格式我得到的输出都是 370KB 但没有图像
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2016-02-02
    • 2016-06-28
    • 2020-10-10
    • 2017-09-06
    • 2016-11-18
    相关资源
    最近更新 更多