我有一个大的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解析获取源代码,并从文件中检索所有文本数据,就像我只是复制/粘贴网页一样。
P.S。无论如何解析文件而不返回网页视图中不存在的任何空格?
答案 0 :(得分: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的指示。