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

运行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
图片描述
问题出在什么地方?怎么解决呢?

阅读 4.6k
5 个回答

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

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

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题