首页 文章

解析源代码(Python)方法:美丽的汤,lxml,html5lib的区别?

提问于
浏览
0

我有一个大的HTML源代码我想解析(~200,000)行,我相当确定整个格式都很差 . 我一直在研究一些解析器,似乎Beautiful Soup,lxml,html5lib是最受欢迎的 . 从阅读这个网站,似乎lxml是最常用和最快的,而美丽的汤比较慢,但会导致更多的错误和变化 .

我对Beautiful Soup文档http://www.crummy.com/software/BeautifulSoup/bs4/doc/以及BeautifulSoup(标记,"lxml")或BeautifulSoup(标记,html5lib)等命令感到有些困惑 . 在这种情况下,它使用Beautiful Soup和html5lib / lxml?速度在这里不是一个问题,但准确性是 . 最终目标是使用urllib2解析获取源代码,并从文件中检索所有文本数据,就像我只是复制/粘贴网页一样 .

附:无论如何解析文件而不返回网页视图中不存在的任何空格?

1 回答

  • 3

    我的理解(将BeautifulSoup用于少数事情)是它是lxml或html5lib等解析器的包装器 . 使用指定的解析器(我相信默认是HTMLParser,python的默认解析器),BeautifulSoup创建一个标记元素树,这样可以很容易地导航和搜索HTML以查找标记内的有用数据 . 如果您确实需要网页中的文字而不是特定HTML标记中的特定数据,则可能只需要与此类似的代码段:

    from bs4 import BeautifulSoup
    import urllib2
    soup = BeautifulSoup(urllib2.urlopen("http://www.google.com")
    soup.get_text()
    

    get_text对于复杂的网页来说并不是那么好(偶尔会有随机的javascript或css),但是如果你对如何使用BeautifulSoup感兴趣,那么获取你想要的文本并不难 .

    出于您的目的,您似乎不必担心让其他解析器与BeautifulSoup(html5lib或lxml)一起使用 . BeautifulSoup本身可以处理一些邋,,如果不能,它会给出“格式错误的HTML”或类似的东西的明显错误,这将是安装html5lib或lxml的指示 .

相关问题