将 GET 请求发送到 url 具有重音字符 python
Sending GET requests to url having accent characters python
我正在尝试在 flask 中创建一个 API,它将 return 用户提到的任何网站的内容。目前,它 运行 在普通网站上完美无缺,但是当 URL 包含重音字符时,我会收到以下错误。
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 26: ordinal not in range(128)
我确定这是因为重音字符。
以下是路线
@app.route('/universal/<string:type_>/<path:site>/')
发送请求函数
def get_soup(self):
req = urllib.request.Request(self.url, headers={'User-Agent' : "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"})
page = urllib.request.urlopen(req)
soup = bs.BeautifulSoup(page.read(), self.parser)
return soup
此处,site 包含站点的 URL。有什么办法可以做到这一点 运行?
您需要对 URL 进行编码,例如urllib.parse.quote(url)
.
将代码更改为
req = urllib.request.Request(urllib.parse.quote(self.url), headers={'User-Agent' : "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"})
有关更多信息和示例,请参阅 https://www.urlencoder.io/python/。
我正在尝试在 flask 中创建一个 API,它将 return 用户提到的任何网站的内容。目前,它 运行 在普通网站上完美无缺,但是当 URL 包含重音字符时,我会收到以下错误。
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 26: ordinal not in range(128)
我确定这是因为重音字符。 以下是路线
@app.route('/universal/<string:type_>/<path:site>/')
发送请求函数
def get_soup(self):
req = urllib.request.Request(self.url, headers={'User-Agent' : "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"})
page = urllib.request.urlopen(req)
soup = bs.BeautifulSoup(page.read(), self.parser)
return soup
此处,site 包含站点的 URL。有什么办法可以做到这一点 运行?
您需要对 URL 进行编码,例如urllib.parse.quote(url)
.
将代码更改为
req = urllib.request.Request(urllib.parse.quote(self.url), headers={'User-Agent' : "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"})
有关更多信息和示例,请参阅 https://www.urlencoder.io/python/。