【发布时间】:2016-09-06 02:49:58
【问题描述】:
所以我有一个 webscraper 启动并运行,对于某些页面,我的代码可以正常工作,但对于其他页面(必须包含特殊字符),当我将页面写入文件时它不会这样做,因为我得到了可怕的 UnicodeEncodeError。我尝试了许多解决方案,包括 UnicodeDammit 和使用 .encode('utf-8', 'ignore') 方法,所有真正的程序员都鄙视读取其他线程,因为它只是抛出数据。问题是,我仍然不知道如何修复我的代码。啊,新手程序员的乐趣!那么各位大师对如何解决这个问题有一些想法吗?
有问题的代码在这里(假设我已经导入了必要的东西并定义了变量,因为我有)。
LBfull = browser2.page_source
LBfullsoup = BeautifulSoup(LBfull, 'html.parser', from_encoding='UTF-8')
LBfileready = str(LBfullsoup.prettify())
unicodedata.normalize('NFKD', LBfileready).encode('utf-8','ignore')
file = open('D:/PATH/'+date+citynames[i]+'LB.txt', 'w')
file.write(LBfileready)
file.close()
可怕的追溯在这里:
Traceback(最近一次调用最后一次):
File "fitbitloop.py", line 95, in <module>
file.write(LBfileready)
File "C:\python351\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 1209190-
1209191: character maps to <undefined>
似乎无论我做了什么,我都无法摆脱这个错误。是否有某种错误检查代码可以用来抛出映射到 .我正在开发的网站是全球性的,因此无可否认可能会有各种特殊字符。由于我无法写入文件,因此我无法查找相关字符。当我从字符串中请求它时,它在 python shell 中只是空白,我认为这是因为我的小命令提示符窗口也无法显示它。那么我该如何解决这个令人不快的问题呢?再次非常感谢任何帮助。或者,如果您能指出我解决问题的线程,那也将不胜感激。关于这个特定主题的话题太多了,很难找到“正确答案”。
【问题讨论】:
-
不要调用str,如果你想要str然后编码。编写时将编码设置为 utf-8
-
如果您只是尝试写入文件而不查看文件,请使用“wb”打开文件,它只会写入原始字节而无需担心编码。
-
感谢帕德莱克和亚当。你们都告诉我我需要听到的。我让它与 'wb' 一起工作,但我也停止使用 str() 了!
-
@JH,如果你有一个可行的解决方案,你可以回答你自己的问题
标签: python selenium web-scraping beautifulsoup python-unicode