Python Yandex拼写检查器API返回空数组
我正试图利用俄语拼写检查API 该请求在我的浏览器中似乎运行良好。但是,当我使用python脚本时,响应是空的 我对自己做错了什么感到困惑 这是我的密码: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,
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': ['синхрофазотрон', 'синхрофазатрон', 'синхрофазотрона']}]
非常感谢你。您的代码也稍微干净一些。它现在工作得很好。我的问题是我对发送请求一无所知。这太让人沮丧了,因为我以为我拥有了所有的东西,但它就是不起作用。我们都在这里学习。如果你觉得这个答案有用,你能接受吗?