我想用cURL和Python的BeautifulSoup
库编写一个(非常)基本的网络爬虫,因为这比GNU awk和一堆正则表达式更容易理解。Python sys.stdin引发一个UnicodeDecodeError
目前,我想管的网页内容到程序与卷曲(即curl http://www.example.com/ | ./parse-html.py
)
出于某种原因,Python中抛出一个UnicodeDecodeError
因为无效的开始字节(我已经看了在this answer和this answer关于无效的起始字节,但没有弄清楚如何解决他们的问题)。
具体而言,我试着从第一个答案中使用a.encode('utf-8').split()
。第二个答案只是解释了这个问题(Python发现一个无效的起始字节),尽管它没有给出解决方案。
我已经尝试卷曲的输出重定向到一个文件(即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循环,尽管我获得了相同的结果ssue。
究竟是什么导致UnicodeDecodeError
,我该如何解决这个问题?
编辑: 通过改变线路html_doc = sys.stdin.readlines().encode('utf-8').strip()
到html_doc = sys.stdin
修复该问题