使用拉丁语从授权网址读取json数据?

时间:2017-11-02 14:02:00

标签: json r python-3.x

我是python的新手。我有一个API链接,用户名,密码来读取数据。我必须从API请求中读取数据,然后将其存储到JSON文件中。稍后我将在pandas或R dataframe中阅读它以进行更多分析。所以我做了:

第一种方法:

import requests
import json
import urllib, base64
url = 'https://abcXXXXXXXX.com/'
username = 'kebXXXXXXXXX'
password = 'XXXb8thXXXXpb8thXX'

以下代码为我提供了一个字节字符串,我无法将其导出为JSON。

print(requests.get(url, auth=(username, password)).content)

所以我把它解码为:

print(requests.get(url, auth=(username, password)).content.decode("utf-8"))

给我一​​个列表,但是子文本是欧洲语言,并且它没有读取正确的格式。在bot文件中,字节和解码文件的格式就像格式Dobr\u00fd den,其中\u00fd应该是拉丁字。

第二种方法: 我尝试使用urllib库。

URL = 'https://abcXXXXXXXX.com/'
username = b'kebXXXXXXXXX'
password = b'XXXb8thXXXXpb8thXX'
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')

但是base64字符串给了我一个错误:期望的字节类对象,而不是str。我试过不同的来源找不到任何解决方案。如果有人能告诉我这样做的最佳方法是什么。我的最终目标是读取JSON数据,将其存储在文件中并通过pandas或数据框读取并进行一些文本分析。 Python或R解决方案就可以了。

数据看起来像(样本):

[
"messages": [
            {
            "type": "agent",
            "name": "",
            "from": null,
            "content": "Hezký den, potřebujete poradit s výběrem eliptického trenažeru?",
            "sentAt": 1509526170320,
            "triggeredBy": "Eliptický trenažér",
            "email": null
            }
            ]
]

1 个答案:

答案 0 :(得分:1)

如果您不知道,requests结果对象有.json() method。这应该自动为您解码内容,假设结果以json格式返回。某些API需要额外的标头。你写的那行,

print(requests.get(url, auth=(username, password)).content)

会改为

print(requests.get(url, auth=(username, password)).json())

如果不需要标题或

print(requests.get(url, auth=(username, password), headers={'Accept': 'application/json'}).json())

如果他们是。