Python 请求 - 从 response.text 中提取数据

Posted

技术标签:

【中文标题】Python 请求 - 从 response.text 中提取数据【英文标题】:Python requests - extracting data from response.text 【发布时间】:2015-03-20 02:55:48 【问题描述】:

我已经四处寻找了几天,但无法弄清楚这一点。基本上我将图像上传到服务器并获得一个 ID 作为回报,问题是我无法弄清楚如何提取此 ID 并将其更改为准备保存到数据库中的字符串。

程序代码

url = <Server address>
with open("image.jpg", "rb") as image_file:
    files = 'file': image_file
    auth = ('<Key>', '<Pass>')
    r = requests.post(url, files=files, auth=auth)

data = r.json()
uploaded = data.get('uploaded')
content_id = uploaded[0]


print r
print r.text
print '--------------'
print str(content_id)

这是我得到的输出

<Response [200]>

    "status": "success",
    "uploaded": [
        
            "filename": "image.jpg",
            "id": "6476edfa1d262ad81181d992da78149d"
        
     ]


--------------
u'id': u'6476edfa1d262ad81181d992da78149d', u'filename': u'image.jpg'

【问题讨论】:

content_id['id'] ? 【参考方案1】:

您正在接收 JSON;您已经使用 response.json() 方法将其解码为 Python 结构:

data = r.json()

您可以将data['uploaded'] 视为任何其他Python 列表;内容只是一个字典,所以另一个字典键来获取id 值:

data['uploaded'][0]['id']

在此处将索引硬编码为[0] 是安全的,因为您知道自己上传了多少张图片。

您可以使用异常处理来检测是否返回了任何意外:

try:
    image_id = data['uploaded'][0]['id']
except (IndexError, KeyError):
    # key or index is missing, handle an unexpected response
    log.error('Unexpected response after uploading image, got %r',
              data)

或者你可以处理data['status'];这一切都取决于您在此处使用的 API 的确切语义。

【讨论】:

我真的很惊讶,为什么在python中对象和关联映射之间存在如此相似之处。你赢了,分诊管家! :-)

以上是关于Python 请求 - 从 response.text 中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

Python 请求:从有效负载中提取数据

Python从搜索中获取请求并检索数据

如何使用请求 Python 从站点获得授权

来自python的请求从nodejs得到不同的响应

如何从 Python 请求调用中提取 HTTP 响应正文?

使用python从xhr请求中获取数据