Python Yandex拼写检查器API返回空数组

Python Yandex拼写检查器API返回空数组,python,api,spell-checking,Python,Api,Spell Checking,我正试图利用俄语拼写检查API 该请求在我的浏览器中似乎运行良好。但是,当我使用python脚本时,响应是空的 我对自己做错了什么感到困惑 这是我的密码: import urllib from urllib.request import urlopen import json def main(): api(text_preproc()) def text_preproc(): """ Takes misspelled word/phrase,

我正试图利用俄语拼写检查API

该请求在我的浏览器中似乎运行良好。但是,当我使用python脚本时,响应是空的

我对自己做错了什么感到困惑

这是我的密码:

import urllib
from urllib.request import urlopen
import json

def main():
    api(text_preproc())

def text_preproc():
    """ Takes misspelled word/phrase,
        “t”, and prepares it for
        API request
    """
    t = "синхрафазатрон в дубне"
    text = t.replace(" ", "+")
    return text

def diff_api(text):
    my_url = "https://speller.yandex.net/services/spellservice.json/checkText?text="
    my_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
    my_data = {
        "text" : text,
        "lang" : "ru",
        "format" : "plain"}

    my_uedata = urllib.parse.urlencode(my_data)
    my_edata = my_uedata.encode('ascii')

    req = urllib.request.Request(url=my_url, data=my_edata, headers=my_headers)
    response = urlopen(req)
    data = json.load(response)
    print(data)
不管我如何修改请求,响应总是一个空数组


了解我可能做错了什么吗?

我的数据必须是发送请求的URL的一部分

此外,在:

def main():
    api(text_preproc())
您可以调用
api()
,但函数未定义。我使用了
diff\u api()

试试这个:

import json
import urllib

from urllib.request import urlopen


def main():
    diff_api(text_preproc("синхрафазатрон в дубне"))


def text_preproc(phrase):
    """ Takes misspelled word/phrase,
        “t”, and prepares it for
        API request
    """
    return phrase.replace(" ", "+")


def diff_api(text):
    my_url = "https://speller.yandex.net/services/spellservice.json/checkText?text="
    my_headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
    my_data = {
        "text": text,
        "lang": "ru",
        "format": "plain"}

    my_uedata = urllib.parse.urlencode(my_data)
    req = urllib.request.Request(url=my_url+my_uedata, headers=my_headers)
    data = json.load(urlopen(req))
    print(data)


main()

输出:

[{'code': 1, 'pos': 5, 'row': 0, 'col': 5, 'len': 14, 'word': 'синхрафазатрон', 's': ['синхрофазотрон', 'синхрофазатрон', 'синхрофазотрона']}]

非常感谢你。您的代码也稍微干净一些。它现在工作得很好。我的问题是我对发送请求一无所知。这太让人沮丧了,因为我以为我拥有了所有的东西,但它就是不起作用。我们都在这里学习。如果你觉得这个答案有用,你能接受吗?