BeautifulSoup下Unicode乱码解决

今天在用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乱码解决

时间: 2024-08-30 02:28:15

BeautifulSoup下Unicode乱码解决的相关文章

Oracle在中文环境下出现乱码解决办法

   zysong.ttf下载是一款oracle字体乱码解决工具,实质于缺乏中文字体包! 01情况的例子 02情况的例子 01.在开始安装的时候出现乱码 下载zysong.ttf,unzip 解压 一般最小化安装的centos没有zip解压和归档管理器file-roller yum install -y unzip file-roller 01.建议在linux下安装些字体 mkdir -p /usr/share/fonts/zh_CN/TrueTypecp cp  zysong.ttf /us

Eclipse For Mac下中文乱码解决

在Mac os 版本的eclipse下引入java项目或是源代码,经常会碰到其中中文部分都是乱码.对于这一问题,经过小试,可以解决. 1.打开eclipse 偏好设置 2.General ——>Content Types——>Text——>Java SourceFile 3.将编码设置为GBK,暂时没有发现问题. 4.update 这样就搞定了,遇到此问题的朋友值得一试哦.

pstree下显示乱码解决

今天使用pstree想查看一下信息,结果发现: [[email protected] ~]# pstreeinit忖?atd     忖crond     忖events/0忖?aio/0     ?         忖kauditd     ?         忖kblockd/0     ?         忖khelper     ?         忖kmirrord     ?         忖2*[pdflush] 怎么都是乱码呢? 难道编码设置有问题? 查看i18n文件 [[em

windows下 qt5&vs2010 在qtCreator下中文乱码

环境:windows2012下 qt5.3.1 & vs2010 在qtCreator3.1.2下中文乱码 解决方法:在相关文件中加入代码 #ifdef Q_OS_WIN32 #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif #endif 或定义一个头文件 包含上面代码,然后在相关文件中引入该头文件.

解决vs2013下创建的python文件,到其他平台(如linux)下中文乱码(或运行时报SyntaxError: (unicode error) 'utf-8' codec can't decode byte...)

Vs2013中创建python文件,在文件中没输入中文时,编码为utf-8的,如图 接着,在里面输入几行中文后,再次用notepad++查看其编码如下,在vs下运行也报错(用cmd运行就不会): 根据以有经验,这是字符编码的问题了,试着将python文件的转化为utf-8的,直接在notepad++上转utf-8 无bom编码格式的,保存,打开vs,会有以下提示 这里不要选择no吧,不然可能会提示以下类似的错误 如果有提示,直接关闭,不然的话,vs又会将此文件保存为ascii格式了 解决vs20

win7下zend studio5.5中文乱码解决方法

win7下zend studio5.5中文乱码解决方法 1.打开 C:Documents and SettingsAdministratorZDEconfig_5.5desktop_options.xml(这个地址要根据自己的电脑而定.) 2.查找 editing.encoding 3.修改里面为 <encoding name=”UTF-8″/> 4.保存,并将该文件属性设置为只读,否则zend每次启动都会将 desktop_options.xml 初始化 5.重启 zend 注意,你现在打开

navicat在ubuntu下中文乱码的真正解决方法ZT

乱码解决方法(自己解决我自己这种情况之后打猜测): 打开start_navicat文件,会看到 export LANG="en_US.UTF-8" 将这句话改为 export LANG="zh_CN.UTF-8".如果还没人解决可以在终端输入locale查看一下,我的显示 LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8&q

Linux 下文件名乱码(无效的编码)的解决办法

文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码. sudo apt-get install convmv convmv 使用方法:convmv -f 源编码 -t 新编码 [选项] 文件名常用参数:-r 递归处理子文件夹–notest 真正进行操作,默认情况下是不对文件进行真实操作–list 显示所有支持的编码–unescap 可以做一下转义,比如把

Xshell下VI打开文件中文乱码解决

修改 /etc/sysconfig/i18n 成如下值:LANG="zh_CN.utf8"LANGUAGE="zh_CN.utf8"SUPPORTED="zh_CN.utf8:zh_CN.GB18030:zh_CN:zh:en_US.UTF8:en_US:en"SYSFONT="lat0-sun16" 保存退出后,重新连接,连接编码也选utf-8即可 Xshell下VI打开文件中文乱码解决,布布扣,bubuko.com