Python 3.2 Beautiful Soup 替代方案

5
我需要制作一个网络爬虫来从网页中提取信息。经过调查,我发现Beautiful Soup非常出色,因为我可以解析所有文档并创建dom对象和迭代,提取属性等(类似于JQuery)。
但是我正在使用Python 3.2,而没有稳定的版本可用(我认为它们的主页上只有3.1)。
因此,我需要一些同样好的替代方案。
4个回答

4

我刚试用了Beautiful Soup 3.2.0。安装过程中在语句print "Unit tests have failed!"处出现了语法错误。这是2.x版本的旧打印语句,你怎么能告诉我它适用于3.2版本呢? - Jirico
将带有回溯的错误报告给BS支持小组,就像他们要求的那样。他们非常乐意提供帮助,在你开始在这里发布它不起作用之前,给他们一个修复的机会。(除非这个已经是你报告了它) - smci

2
我认为最新版本是4.1.1,你可以在这里阅读相关信息 BS4文档 我已经在我的网站上使用了PHP和BS4一段时间,并取得了很好的结果。由于PHP / Python不兼容问题,我不得不切换回BSv3,但这与BS4脚本本身的工作效果无关。
起初我使用内置的HTML解析引擎,但发现速度较慢。在我的Web服务器上安装LMXL引擎后,速度大幅提升!实际解析没有明显改善,但速度显著提高。
我建议你试试 - 我推荐它,在我选择Beautiful soup之前,我尝试了很多不同的选项。
祝你好运!

1
lxml主页上得知:
最新版本适用于从2.4到3.2的所有CPython版本。

我刚刚读到Beautiful Soup 3.1系列适用于Python 3.0,但没有提到3.2。而且3.x版本使用HTMLParser,因为SGMLParser(更好的解析器)已被删除 :/。此外,作者不再提供支持。 - Jirico
@Jirico: 这就是为什么我推荐使用lxml。 - Sven Marnach
lxml看起来不如Beautiful Soup好用,但我会试一试。谢谢!嗯,我想我会使用Python 2.7,这样我将得到更多第三方支持... - Jirico

0

与BeautifulSoup最直接且最好的替代方案是Mechanize

如果您需要自动化简单的网页功能,例如提交表单(包括预先没有的信息,如CSRF令牌),那么Mechanize是您的救星。它甚至可以在多种编程语言中使用!

话虽如此,Sven的答案是正确的:当我只需要从HTML中提取信息时,我喜欢lxml。


我发布这个答案是因为今天我想知道“哦,那个库比BS好得多,我曾经因为有人仍在使用BS而感到愤怒”的时候,我已经忘记了Mechanize也适用于Python。所以我认为它值得重申! - Nemo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接