【发布时间】:2016-04-25 17:32:25
【问题描述】:
我正在尝试使用 cURL 和 Python 的 BeautifulSoup 库编写一个(非常)基本的网络爬虫(因为这比 GNU awk 和一堆正则表达式更容易理解)。
目前,我正在尝试使用 cURL(即curl http://www.example.com/ | ./parse-html.py)将网页内容通过管道传输到程序中
由于某种原因,Python 抛出了 UnicodeDecodeError,因为起始字节无效(我查看了 this answer 和 this answer 关于无效起始字节的信息,但没有弄清楚如何从他们那里解决问题) .
具体来说,我尝试使用第一个答案中的a.encode('utf-8').split()。第二个答案只是简单地解释了这个问题(Python 发现了一个无效的起始字节),尽管它没有给出解决方案。
我尝试将 cURL 的输出重定向到文件(即 curl http://www.example.com/ > foobar.html 并修改程序以接受文件作为命令行参数,尽管这会导致相同的 UnicodeDecodeError。
我查了一下,locale charmap 的输出是UTF-8,据我所知,这意味着我的系统正在编码UTF-8 中的字符(这让我对这个UnicodeDecodeError 感到特别困惑。
目前,导致错误的确切行是html_doc = sys.stdin.readlines().encode('utf-8').strip()。我尝试将其重写为 for 循环,但我遇到了同样的问题。
究竟是什么导致了UnicodeDecodeError,我应该如何解决这个问题?
编辑:
通过将html_doc = sys.stdin.readlines().encode('utf-8').strip() 更改为html_doc = sys.stdin 可以解决问题
【问题讨论】:
标签: python-3.x encoding utf-8 sys