我遇到了一个问题,无法弄清楚为什么以及如何解决。我在Flask中构建了一个基本的API,可以从Google趋势中获取数据。我现在正在编写一个Python脚本来使用该API。该API需要5个查询string
参数(keyword1, keyword2, start, end, country
)。当我使用POSTMAN调用该API时,它会给我200响应和正确的数据(生成csv
文件并存储它)。现在,我需要实现代码以对该服务发出POST请求。我遇到2个查询参数:keyword1
和keyword2
的问题,当我在有效负载中编码这些参数时,它运行良好(200个响应并存储文件)。当我使用变量而不是对keyword1
和keyword2
进行编码时,出现500错误。我所做的是:
keyword1
和keyword2
的类型,并且它是我的查询参数中预期的string
不确定这里是什么问题,我花了最后4个小时来尝试了解问题所在
500错误代码
start = '2020-01-01'
end = '2020-01-15'
country = 'GB'
#Few others methods between
def request_trends_service():
current_position = get_position_reader()
new_position, keyword1 = read_line_from_csv(current_position)
new_position, keyword2 = read_line_from_csv(new_position)
save_new_position(new_position)
url = "https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends?"
payload = {
"keyword1": keyword1,
"keyword2": keyword2,
"start": start,
"end": end,
"country": country
}
parameters = urllib.parse.urlencode(payload)
url += parameters
r = requests.post(url)
print(r.text.encode('utf8'))
有效的代码(更改了2行)
start = '2020-01-01'
end = '2020-01-15'
country = 'GB'
#Few others methods between
def request_trends_service():
current_position = get_position_reader()
new_position, keyword1 = read_line_from_csv(current_position)
new_position, keyword2 = read_line_from_csv(new_position)
save_new_position(new_position)
url = "https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends?"
payload = {
"keyword1": "sun",
"keyword2": "fun",
"start": start,
"end": end,
"country": country
}
parameters = urllib.parse.urlencode(payload)
url += parameters
r = requests.post(url)
print(r.text.encode('utf8'))