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

【整理】关于Python中的html处理库函数BeautifulSoup使用注意事项

BeautifulSoup crifan 3823浏览 0评论

此处不打算解释具体用法,因为官方主页中有说明:

Beautiful Soup Documentation

Beautiful Soup 中文文档

以及网上也有很多资料解释,具体是如何使用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>", "");

去处理,然后再去解析,就可以了。

转载请注明:在路上 » 【整理】关于Python中的html处理库函数BeautifulSoup使用注意事项

发表我的评论
取消评论

表情

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

    86 queries in 0.213 seconds, using 22.04MB memory