如何解决如何打开包含非asci字符的url要求的json文件?
我正在尝试从包含波兰语字母字符的API打开json文件。我曾尝试将url编码为utf-8,但仍然会弹出各种问题。我包括了我编写的代码和出现的错误。
import urllib.request as request
import json
url='https://api.um.warszawa.pl/api/action/dbtiMetable_get?id=myapiID&busstopId=wartość&busstopNr=wartość&line=wartość&apikey=wartość'
url=url.encode('utf-8')
with request.urlopen(url) as response:
source = response.read()
data = json.loads(source)
解决方法
这里有两个问题,可能都是由于要求使用包含非ASCII字符的查询组件访问url所致。
- 首先,将
bytes
实例传递给urlopen
会导致意外行为,如here 所述
- 第二,URL的查询参数中不允许使用非ASCII字符,因此必须对查询参数进行数字编码。
因此,鉴于网址无效,您需要执行以下操作:
import json
from urllib import parse
from urllib import request
parts - parse.urlsplit(url)
query_dict = parse.parse_qs(parts.query)
encoded_query = parse.urlencode(query_dict)
fixed_url = parse.urlunsplit((parts.scheme,parts.netloc,parts.path,encoded_query,parts.fragment))
response = request.urlopen(fixed_url)
print(json.load(response))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。