Beautifulsoup,Python和HTML自动页面截断?

时间:2010-09-13 22:13:59

标签: python beautifulsoup

我正在使用Python和BeautifulSoup来解析HTML页面。不幸的是,对于某些页面(> 400K),BeatifulSoup会截断HTML内容。

我使用以下代码获取“div”的集合:

findSet = SoupStrainer('div')
set = BeautifulSoup(htmlSource, parseOnlyThese=findSet)
for it in set:
    print it

在某个时刻,输出看起来像:

correct string, correct string, incomplete/truncated string ("So, I")

虽然,htmlSource包含字符串“所以,我很无聊”等等。另外,我想提一下,当我对树进行美化时,我看到HTML源被截断了。

您是否知道如何解决此问题?

谢谢!

2 个答案:

答案 0 :(得分:4)

尝试使用lxml.html。它是一个更快,更好的HTML解析器,并且比最新的BeautifulSoup更好地处理损坏的html。它适用于您的示例页面,解析整个页面。

import lxml.html

doc = lxml.html.parse('http://voinici.ceata.org/~sana/test.html')
print len(doc.findall('//div'))

上面的代码返回131个div。

答案 1 :(得分:0)

我在beautifulsoup-where-are-you-putting-my-html使用BeautifulSoup找到了解决此问题的方法,因为我认为它比lxml更容易。

您唯一需要做的就是安装:

pip install html5lib

并将其作为参数添加到BeautifulSoup:

soup = BeautifulSoup(html, 'html5lib')