我是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
}
]
]
答案 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())
如果他们是。