最近寫了幾隻爬蟲,爬一些網站,然後存到 mysql 裡面,在使用 crontab 排成執行時,發生了錯誤。
在終端機或是 spyder 上執行都是沒問題的,但是 crontab 就是跑不出來,於是使用了我在另一篇文章提到的:用 crontab 安排作業排程後,如何知道裡面發生了什麼事?
顯示出這個錯誤:UnicodeEncodeError: ‘ascii’ codec can’t encode character
原因在於:
在終端機中直接執行Python程序時,Python會將輸出內容自動編碼為終端所使用的編碼,我使用的終端編碼是utf-8,所以不會出錯,輸出的內容也是正常的。但是在使用管道或者重定向時,編碼格式為ascii,Python會用ascii編碼格式去encode輸出的字符串,但是字符串的編碼使用的時utf-8,所以會出現UnicodeEncodeError的錯誤。
解決方法:
很簡單,在你的 crontab 第一行打上以下這些字,你的中文爬蟲就會啟動了。
LANG=zh_CN.UTF-8