我正试图抓取一个网站,但它给了我一个错误。
我正在使用以下代码:
import urllib.request
from bs4 import BeautifulSoup
get = urllib.request.urlopen("https://www.website.com/")
html = get.read()
soup = BeautifulSoup(html)
print(soup)
我得到了以下错误:
File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 70924-70950: character maps to <undefined>
我能做些什么来解决这个问题?
在Python3.7和运行Windows10中,这一点起了作用(我不确定它是否能在其他平台和/或其他版本的Python上工作)
替换此行:
打开('filename','w')作为f:
用这个:
与打开('filename','w',编码='utf-8')作为f:
它工作的原因是,在使用文件时,编码更改为UTF-8,因此UTF-8中的字符可以转换为文本,而不是在遇到当前编码不支持的UTF-8字符时返回错误。
我通过添加. encode("utf-8")
来修复它。
这意味着print(soup)
变成了print(soup.encode(“utf-8”)
。
当我将抓取的web内容保存到一个文件中时,我得到了相同的unicodeincoder错误。为了修复它,我替换了以下代码:
with open(fname, "w") as f:
f.write(html)
用这个:
with open(fname, "w", encoding="utf-8") as f:
f.write(html)
如果需要支持Python 2,请使用以下命令:
import io
with io.open(fname, "w", encoding="utf-8") as f:
f.write(html)
如果您的文件编码为UTF-8以外的代码,请指定您的实际编码为
编码
。
问题内容: 我正在尝试抓取一个网站,但这给我一个错误。 我正在使用以下代码: 我收到以下错误: 我该怎么做才能解决此问题? 问题答案: 我通过添加将其修复。 那意味着变成。
问题内容: 尝试打印从我在python 3.4中使用selenium请求的网站获得的“Á”时,我一直收到UnicodeEncodeError。 我已经在.py文件的顶部定义了 def是这样的: 和例外: 提前致谢 问题答案: 已经知道了。正如在此]答案中指出的那样,编码错误不是来自python,而是来自控制台使用的编码。因此,解决此问题的方法是运行命令(在Windows中): 将编码设置为UTF-
问题内容: 我正在编写一个Python(Python 3.3)程序,以使用POST方法将一些数据发送到网页。通常在调试过程中,我会获取页面结果并使用print()功能将其显示在屏幕上。 代码是这样的: 该方法返回一个bytes编码页面的元素(格式正确的UTF-8文档),直到我停止使用Windows的IDLE GUI并改为使用Windows控制台时,这似乎还可以。返回的页面具有字符(破折号),打印功
问题内容: 当上传具有非ASCII字符的文件时,出现UnicodeEncodeError: 我使用MySQL,nginx和FastCGI运行Django 1.2。 根据Django Trac数据库,这是已解决的问题,但是我仍然有问题。欢迎提供有关如何修复的任何建议。 编辑:这是我的图像字段: 问题答案: 在对此进行更多调查之后,我发现我尚未在我的主要Nginx配置文件中设置字符集: 通过添加以上内
问题内容: 我的python(2.7版)脚本运行良好,可以从本地html文件中获取一些公司名称,但是当涉及到某些特定的国家/地区名称时,则会出现此错误“UnicodeEncodeError:’ascii’编解码器无法编码字符” 此公司名称到来时特别出错 公司名称: KühlfixKälteanlagenIng。Gerhard Doczekal&Co. KG 链接无法处理 错误显示在这行代码中: 问
问题内容: 当我尝试在数据库中插入外来字符时,可能是什么导致此错误? 而我该如何解决呢? 谢谢! 问题答案: 字符U + 201C左双引号在Latin-1(ISO-8859-1)编码中不存在。 这 是 目前在代码页1252(西欧)。这是Windows特定的编码,基于ISO-8859-1,但会将多余的字符放入0x80-0x9F范围内。代码页1252通常与ISO-8859-1混淆,这是一种令人烦恼但现