最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】BeautifulSoup的CData无法处理<!–之类的javascript的comment

BeautifulSoup crifan 2595浏览 0评论

在用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

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.168 seconds, using 22.08MB memory