当前位置:  开发笔记 > 编程语言 > 正文

BeautifulSoup 3.1解析器很容易打破

如何解决《BeautifulSoup3.1解析器很容易打破》经验,为你挑选了1个好方法。

我在使用BeautifulSoup解析一些狡猾的HTML时遇到了麻烦.事实证明,较新版本中使用的HTMLParser不如先前使用的SGMLParser容忍.


BeautifulSoup有某种调试模式吗?我正在试图弄清楚如何阻止它从一个令人讨厌的HTML borking我从一个crabby网站加载:


    
        Title
        
    
    
        ...
        ...
    

BeautifulSoup在标签后放弃

In [1]: print BeautifulSoup(c).prettify()

 
  
   Title
  
 

这个问题显然是HTTP-EQUIV标签,这实在是一个畸形的标签.显然,我需要将其指定为自动关闭,但无论我指定什么,我都无法修复它:

In [2]: print BeautifulSoup(c,selfClosingTags=['http-equiv',
                            'http-equiv="pragma"']).prettify()

 
  
   Title
  
 

是否有一个详细的调试模式,BeautifulSoup将告诉我它在做什么,所以我可以弄清楚它在这种情况下作为标签名称处理什么?



1> jfs..:

有美丽的汤3.1.0的问题?建议使用html5lib的解析器作为解决方法之一.

#!/usr/bin/env python
from html5lib import HTMLParser, treebuilders

parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))

c = """
    
        Title
        
    
    
        ...
        ...
    
"""

soup = parser.parse(c)
print soup.prettify()

输出:


 
  
   Title
  
 
 
  
   ...
        ...
  
 

输出显示html5lib在这种情况下没有解决问题.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有