Python BeautifulSoup和lxml解析器的问题

Python BeautifulSoup和lxml解析器的问题,python,web-scraping,beautifulsoup,lxml,Python,Web Scraping,Beautifulsoup,Lxml,我在使用Beautifulsoup4.1.0和lxml解析器抓取一些网页时注意到一个奇怪的行为。内置的html.parser对我试图抓取的网页不起作用,我决定使用lxml解析器 我的Eclipse控制台上的打印结果在几秒钟内看起来很好,然后,它会自动切换到不完整、无用且不太好看的输出,所有字符之间都有空格: ! - - S w i t c h - - >

我在使用Beautifulsoup4.1.0和lxml解析器抓取一些网页时注意到一个奇怪的行为。内置的html.parser对我试图抓取的网页不起作用,我决定使用lxml解析器

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

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

                     / d i v > 
页面的单据类型为:

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


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

为了帮助人们解决这个问题,我写了一篇文章。基本上,这个问题是由lxml的HTML解析器中的一个bug引起的,该bug由HTML文档触发,该文档包含一个将字符集定义为UTF-8以外的标记

如果该文档中的建议不适用于您,请告知我。

我使用了:

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

并设法从lxml中提取出我需要的信息。使用html5lib解析器也解决了这个问题,并给了我一个清晰的打印结果。

如果是这样,粘贴一些示例代码会很有帮助。谢谢Leonard。我使用的是BS4.1,lxml-3.2.1,所以步骤1和2都可以。关于步骤4,当我将ISO-8859-1字符替换为utf-8时,我得到的输出如下:
我尝试了两个不同的站点,两个站点的输出相同。谢谢你的帮助!