将 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/