Asi*_*dra 5 encoding beautifulsoup web-scraping python-3.x
我收到UnicodeEncodeError: 'charmap' codec can't encode character '\u200b' in position 756: character maps to error while running this code::
from bs4 import BeautifulSoup
import requests
r = requests.get('https://stackoverflow.com').text
soup = BeautifulSoup(r, 'lxml')
print(soup.prettify())
Run Code Online (Sandbox Code Playgroud)
输出是:
Traceback (most recent call last):
File "c:\Users\Asus\Documents\Hello World\Web Scraping\st.py", line 5, in <module>
print(soup.prettify())
File "C:\Users\Asus\AppData\Local\Programs\Python\Python38\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u200b' in position 756: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
我在 vs 代码中使用 python 3.8.1 和 UTF-8。如何解决这个问题?
你可以自己探索一点......但是对于python 2.7,我通常做的是使用它来清理我的文本:
text = text.encode('utf-8').decode('ascii', 'ignore')
Run Code Online (Sandbox Code Playgroud)
与此等效的 python 3 很简单:
text = str(text)
Run Code Online (Sandbox Code Playgroud)
对于你的情况,试试这个:
r = requests.get('https://stackoverflow.com').text.encode('utf8').decode('ascii', 'ignore')
Run Code Online (Sandbox Code Playgroud)
否则通常:
r = requests.get('https://stackoverflow.com')
soup = BeautifulSoup(r.content, 'lxml')
print soup
Run Code Online (Sandbox Code Playgroud)
(我不认为这应该给出任何错误。)
完整的错误消息中有提示......我将在这里保留似乎最重要的内容:
Traceback ...
File "...\cp1252.py", ...
UnicodeEncodeError: 'charmap' codec can't encode character '\u200b' ...
Run Code Online (Sandbox Code Playgroud)
错误是由print
调用引起的。在您文本的某个地方,您有一个零宽度空格字符 (Unicode U+200B),如果您打印到 Windows 控制台,则该字符串会在内部编码到 Windows 控制台代码页(此处为 cp1252)中。并且该代码页中没有表示零宽度空间。顺便说一句,默认控制台在 Windows 中并不是真正的 unicode 友好的。
在 Windows 控制台中几乎没有什么可做的。我建议您尝试以下解决方法之一:
不要打印到控制台,而是写入 (utf8) 文件。然后,您将能够使用支持 utf8 的文本编辑器(如记事本 ++)阅读它
在打印之前手动编码任何内容,使用errors='ignore'
或errors='replace'
。这样,可能有问题的字符将被忽略并且不会出现错误
print(soup.prettify().encode('cp1252', errors='ignore'))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15387 次 |
最近记录: |