【问题标题】:python url request response decodingpython url请求响应解码
【发布时间】:2019-01-19 13:11:17
【问题描述】:

我正在尝试从 urllib.request 响应中获取指向图像的链接。

我正在尝试从此页面获取内容:https://drscdn.500px.org/photo/27428737/m%3D900/v2?webp=true&sig=3d3700c82ea515ecc0b66ca265d6909d67861fbe055c0e817b535f75b21c7ebf 并对其进行解码,但 decode("utf-8") 方法给了我错误:'utf-8' codec can't decode byte 0xff in position 0 : 无效的起始字节。我已经在浏览器控制台中使用 document.characterSet 检查了页面编码,它与 utf-8 编码匹配。

def ex4():
    url = sys.argv[1]
    r = re.compile(b"<img .*? src=\"([^\"])*\" (.*?)*>")
    try:
        resource = urllib.request.urlopen(url)
        response = resource.read().decode("utf-8")
        print(response)
        obj = r.search(response)
        if obj:
            print(obj.group(1))
        else:
            print("not found")
    except Exception as e:
        print("error: ", e)


ex4()

【问题讨论】:

  • 这是一个图片链接,不能用UTF8编码

标签: python python-3.x url urllib


【解决方案1】:

为您提供二进制图像,因此您可以直接保存或处理图像。
例如:

url = 'https://drscdn.500px.org/photo/27428737/m%3D900/v2?webp=true&sig=3d3700c82ea515ecc0b66ca265d6909d67861fbe055c0e817b535f75b21c7ebf'
resource = urllib.request.urlopen(url)
response = resource.read()

with open('/tmp/foo.jpg', 'wb') as f:
    f.write(response)

【讨论】:

    【解决方案2】:

    你想达到什么目标?获取图像并将其保存为文件?如果是,请将其保存在文件中

    def ex4():
        url = sys.argv[1]
        try:
            resource = urllib.request.urlopen(url)
            response = resource.read()
            with open('img.png', 'wb') as f:
                f.write(a)
        except Exception as e:
            print("error: ", e)
    
    ex4()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-20
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多