首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向deepL接口发出python请求?

如何向deepL接口发出python请求?
EN

Stack Overflow用户
提问于 2020-05-13 23:52:05
回答 5查看 3.7K关注 0票数 8

我正在尝试制作一个python脚本,用于使用DeepL应用程序接口进行翻译。我尝试发出请求,但它响应HTTP错误400 (Bad request)。

下面是我的脚本代码,其中我用XXX替换了真实的身份验证密钥

代码语言:javascript
复制
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)
EN

回答 5

Stack Overflow用户

发布于 2020-11-16 22:54:36

在某些情况下,有必要编写POST请求,然后您应该按照以下步骤进行(也可以从DeepL常见问题解答中获得):

如何避免错误414,“请求URI太长”?如果API URL太长,并且是由于web服务器的长度限制,则会出现此错误。可以通过使用POST请求而不是GET请求来避免此错误消息。

因此,您可以使用请求包,如下所示:

代码语言:javascript
复制
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?'
                          })
票数 3
EN

Stack Overflow用户

发布于 2021-06-06 06:34:48

为了获得正确的响应,您需要按如下方式组织查询:

代码语言:javascript
复制
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_languagetext。这是一个冗长的解释,所以我提供了以下示例:

这些命令:

代码语言:javascript
复制
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())

返回:

代码语言:javascript
复制
{'translations': [{'detected_source_language': 'IT', 'text': 'What a beautiful day'}]}

因此,重申一下,您必须使用sample.json()["translations"][0]["text"]来访问转换,其中sample是您命名的响应,并且是获得成功请求的第一个代码块。

票数 2
EN

Stack Overflow用户

发布于 2020-05-21 21:14:11

您应该将凭据、texttarget_lang作为参数添加到url,如下所示:

代码语言:javascript
复制
https://api.deepl.com/v2/translate?auth_key=&text=Che%20bellissima%20giornata&source_lang=IT&target_lang=EN

DeepL提供了一个创建示例请求的工具:请参阅如何为API请求创建URL示例?在https://www.deepl.com/pro-faq.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61779135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档