我正在尝试制作一个python脚本,用于使用DeepL应用程序接口进行翻译。我尝试发出请求,但它响应HTTP错误400 (Bad request)。
下面是我的脚本代码,其中我用XXX替换了真实的身份验证密钥
import requests
url = "https://api.deepl.com"
auth_key = {
'host' : "https://api.deepl.com/v2/translate?",
'auth_key':"auth_key=XXX"
}
querystring = {
"text" : "Che bellissima giornata",
"target_lang" : "en"
}
response = requests.request("POST", url, headers=auth_key, data=querystring)
print(response)
print(response.text)发布于 2020-11-16 22:54:36
在某些情况下,有必要编写POST请求,然后您应该按照以下步骤进行(也可以从DeepL常见问题解答中获得):
如何避免错误414,“请求URI太长”?如果API URL太长,并且是由于web服务器的长度限制,则会出现此错误。可以通过使用POST请求而不是GET请求来避免此错误消息。
因此,您可以使用请求包,如下所示:
import requests
r = requests.post(url='https://api.deepl.com/v2/translate',
data = {
'target_lang' : 'EN',
'auth_key' : 'XXXXXXXXXXXXXXXXXXXX',
'text': 'Was ist denn los hier?'
})发布于 2021-06-06 06:34:48
为了获得正确的响应,您需要按如下方式组织查询:
import requests
r = requests.post(
url="https://api.deepl.com/v2/translate",
data={
"target_lang": "EN",
"auth_key": auth_key,
"text": string_to_translate,
},
)其中auth_key是您的身份验证密钥,string_to_translate是您要转换的文本。
我使用black对上面的代码进行了格式化,这就是为什么它看起来与dwightkschruteIII包含的代码不同,尽管它实际上做的是相同的事情。
但是,要使用python访问此转换,您需要使用以下代码:
r.json()["translations"][0]["text"]
因为DeepL将返回一个以translations作为唯一键的json,并返回一个包含另一个json作为相应值的列表。列表中的json有两个键:detected_source_language和text。这是一个冗长的解释,所以我提供了以下示例:
这些命令:
sample = requests.post(url="https://api.deepl.com/v2/translate", data={"target_lang": "EN", "auth_key": auth_key, "text": "Che bellissima giornata"})
print(sample.json())返回:
{'translations': [{'detected_source_language': 'IT', 'text': 'What a beautiful day'}]}因此,重申一下,您必须使用sample.json()["translations"][0]["text"]来访问转换,其中sample是您命名的响应,并且是获得成功请求的第一个代码块。
发布于 2020-05-21 21:14:11
您应该将凭据、text和target_lang作为参数添加到url,如下所示:
https://api.deepl.com/v2/translate?auth_key=&text=Che%20bellissima%20giornata&source_lang=IT&target_lang=ENDeepL提供了一个创建示例请求的工具:请参阅如何为API请求创建URL示例?在https://www.deepl.com/pro-faq.html上
https://stackoverflow.com/questions/61779135
复制相似问题