我在使用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">
我想知道你们中是否有人遇到过类似的问题以及如何解决这个问题。提前谢谢。
答案 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解析器也可以解决问题并给我一个干净的打印。