消息关闭
    暂无新消息!

运行python爬虫时,MySQL版本是5.7,总是报错

C:\Python34\lib\site-packages\pymysql\cursors.py:166:
Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' 
for column 'VARIABLE_VALUE' at row 480")
result = self._query(query)

数据库格式已经设置为utf8

问题出在什么地方?怎么解决呢?


5个回答

︿ 3

警告提示的是在480行有错误的字符值,文件的编码和MySQL的编码设置不一致吧

︿ 2

你爬了gbk编码的内容,应该先判断页面的编码,如果是gbk编码的,就decode('gbk')再encode('utf-8')。

>>> print '\xD6\xD0\xB9\xFA\xB1\xEA'.decode('gbk').encode('utf-8')
中国标

至于怎么快速准确地判断页面的编码,这是技术活。

︿ 1

如果其他的utf8字符串写入mysql也没问题 那么肯定是你爬虫时候 请求下来的内容有问题 一般有两种情况会出现这种问题:

  • 爬虫内容不是utf8 这种情况很好处理 根据编码格式转下就行

  • 爬虫内容被gzip压缩 这种情况爬下来的内容是乱码的 不管转换成什么编码都是乱码,所以要先将内容解压后,再转换成utf8,解压方法请看 beautifulsoup爬虫出现乱码

︿ 0

大部分都是因为mysql编码没设置好,mysql默认编码是latin,要改成和程序相同。