在用python脚本解析这个页面:
http://benbenwo1091.blog.163.com/blog/static/26634402200842202442518/
的时候,处理流程是用BeautifulSoup处理获取的页面后,调用:
foundContent = soup.find(attrs={“class”:”bct fc05 fc11 nbw-blog ztag”})
mappedContents = map(CData, foundContent.contents)
结果会出错。
对应的出错部分的内容,去查看了下,是这样的字符:
下面对这阶段涉猎到的知识做一下汇总,已备期末考试过后,继续学习。 <!–[if !supportLists]–>1、 <!–[endif]–>the first window program 对于qt, |
【解决过程】
1. 表面上看起来好像是BeautifulSoup的CData无法处理<!–之类的javascript的comment,然后就去搜了一番,然后自己尝试将出错的foundContent.contents[11]强制转换为unicode,会出错,而转换为str倒是可以,但是不方便后期以unicode的方式处理所获得的内容了。
所以,始终无法解决。
2.后来想起来,去换个其他的版本的BeautifulSoup试试,就去其官方:
找到下载的地方:
http://www.crummy.com/software/BeautifulSoup/download/3.x/
下载了:
http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.0.6.py
然后试了试,结果就可以了,CData处理同样的数据,也不会出错了。
【结论】
BeautifulSoup-3.0.4.py中的CData有bug,处理某些从网页中获取的内容的时候,会出错。
换成BeautifulSoup-3.0.6.py,就可以了。
估计更高的版本中,bug更少,只是BeautifulSoup版本大于3.0.6的话,就需要安装了,嫌麻烦,所以就不去折腾了。也就用3.0.6了就够用了。
转载请注明:在路上 » 【已解决】BeautifulSoup的CData无法处理<!–之类的javascript的comment