0

在使用 BeautifulSoup 4.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">

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

4

2 回答 2

1

为了帮助人们解决这个问题,我写了“Beautiful Soup 解析的文档中的额外空格:权威指南”。基本上,问题是由 lxml 的 HTML 解析器中的错误引起的,该错误由包含将字符集定义为 UTF-8 以外的标记的 HTML 文档触发。

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

于 2013-06-17T13:57:38.460 回答
0

我用了:

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

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

于 2013-06-24T23:16:31.000 回答