BeautifulSoup和lxml解析器的问题

时间:2013-06-16 21:24:16

标签: python web-scraping beautifulsoup lxml

我在使用BeautifulSoup 4.1.0和lxml解析器抓取一些网页时发现了一种奇怪的行为。内置的html.parser不能用于我试图抓取的网页,我决定使用lxml解析器。

我的Eclipse控制台上打印的结果在几分之一秒内看起来不错,然后,它会自动切换到一个不完整,无用且不那么好看的输出,所有字符之间都有空格:

                           ! - -   S w i t c h   - - >                

                     / d i v > 

页面的doc-type是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

我想知道你们中是否有人遇到过类似的问题以及如何解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:1)

为了帮助解决这个问题的人,我写了"Extra spaces in documents parsed by Beautiful Soup: the definitive guide"。基本上,问题是由lxml的HTML解析器中的错误引起的,该错误由HTML文档触发,该文档包含将字符集定义为UTF-8以外的标记。

如果该文件中的建议不适合您,请告诉我。

答案 1 :(得分:0)

我用过:

newsoup = str(soup).replace(" ", "")

并设法用lxml提取我需要的信息。使用html5lib解析器也可以解决问题并给我一个干净的打印。