gpt4 book ai didi

python - 使用 urllib 读取 url 时出现编码错误

转载 作者:行者123 更新时间:2023-11-28 18:28:39 28 4
gpt4 key购买 nike

当我尝试使用 urllib.request 和 Python 抓取 URL 中包含特殊字符的维基百科网站时,出现以下错误 UnicodeEncodeError: 'ascii' codec can't encode character '\xf8' in位置 23:序号不在范围内(128)

代码:

# -*- coding: utf-8 -*-
import urllib.request as ur

url = "https://no.wikipedia.org/wiki/Jonas_Gahr_Støre"
r = ur.urlopen(url).read()

如何使用 utf-8 编码的 urllib.request?

最佳答案

显然,urllib 只能处理 ASCII 请求,将您的 url 转换为 ascii 会给您的特殊字符带来错误。用 %C3%B8 替换 ø,这是在 http 中对这个特殊字符进行编码的正确方法,似乎可以解决问题。但是,我找不到像您的浏览器那样自动执行此操作的方法。

例子:

>>> f="https://no.wikipedia.org/wiki/Jonas_Gahr_St%C3%B8re"
>>> import urllib.request
>>> g=urllib.request.urlopen(f)
>>> text=g.read()
>>> text[:100]
b'<!DOCTYPE html>\n<html class="client-nojs" lang="nb" dir="ltr">\n<head>\n<meta charset="UTF-8"/>\n<title'

上面的答案不行,因为他是在请求处理完之后才编码,而你在请求处理的时候报错。

关于python - 使用 urllib 读取 url 时出现编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229439/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com