码迷,mamicode.com
首页 > 其他好文 > 详细

BeautifulSoup下Unicode乱码解决

时间:2014-07-22 22:53:55      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:blog   使用   文件   数据   问题   re   

今天在用scrapy爬某个网站的数据,其中DOM解析我用的是BeautifulSoup,速度上没有XPath来得快,不过因为用了习惯了,所以一直用的bs,版本是bs4

不过在爬取过程中遇到了一些问题,其中一个是Unicode转码问题,这也算是python中一个著名问题了。

我遇到的算是BeautifulSoup中的一个奇葩bug吧,在网页中经常会有 &nbsp 这种标记,称为 non-breaking space character, 本来这个应该是忽略的,但在bs中会把这个符号

转义成为一个unicode编码  \xa0, 这就导致了后面如果要对内容处理的话会出现UnicodeError, 特别是如果使用的是Console或者scrapy中写文件、写数据库的pipeline操作时,

出现无法转义的错误。

 

那么该如何解决呢,其实不难

s = u‘\xa0‘

s.replace(u‘\xa0‘, u‘‘)

之后就可以对s进行encode,比如:

s = u‘\xa0‘
s.replace(u‘\xa0‘, u‘‘).encode(‘utf-8‘)

特别是在我的项目中,如果需要把数据写到MongoDB中,这个bug fix完后,写数据立刻搞定,爬取的内容全部写到MongoDB中。

BeautifulSoup下Unicode乱码解决,布布扣,bubuko.com

BeautifulSoup下Unicode乱码解决

标签:blog   使用   文件   数据   问题   re   

原文地址:http://www.cnblogs.com/skymoney/p/python_bs_unicode.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!