我想用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
修復該問題