此处不打算解释具体用法,因为官方主页中有说明:
以及网上也有很多资料解释,具体是如何使用BeautifulSoup的。
此处只是记录,在使用过程中,遇到的一些问题,以及如何解决的,或者是使用时候,有哪些需要注意的事情。
1.关于不支持<!-[xxx]->相关的问题
如果要解析的html中包含类似于:
<!–[if lte IE 6]>
<![endif]–>
等字样的字符串,此处3.0.6的BeautifulSoup会解析出错的。
具体相关解释去看:
【已解决】BeautifulSoup的CData无法处理<!–之类的javascript的comment
【已解决】BeautifulSoup 3.0.6中有bug:不能正确处理包含<!-[if xxx]>和<![endif]->
2.不支持html中一些属性/字符的深度嵌套
如果解析的html中包含一些特殊的情况,比如
sina的一个博客帖子:
http://blog.sina.com.cn/s/blog_5058502a01017j3j.html
其html源码中包含这样的:
。。。。。。<font COLOR=”#6D4F19″><font COLOR=”#7AAF5A”><font COLOR=”#7AAF5A”><font COLOR=”#6D4F19″><font COLOR=”#7AAF5A”><font COLOR=”#7AAF5A”>。。。。</FONT></FONT></FONT></FONT></FONT></FONT></FONT>。。。。。 |
那么此部分内容,就会解析失败。
此处我用了代码:
# handle special case for http://blog.sina.com.cn/s/blog_5058502a01017j3j.html processedHtml = processedHtml.replace('<font COLOR="#6D4F19"><font COLOR="#7AAF5A"><font COLOR="#7AAF5A"><font COLOR="#6D4F19"><font COLOR="#7AAF5A"><font COLOR="#7AAF5A">', ""); processedHtml = processedHtml.replace("</FONT></FONT></FONT></FONT></FONT></FONT>", "");
去处理,然后再去解析,就可以了。