我应该使用什么纯Python库来抓取网站?

时间:2009-10-13 21:58:03

标签: python google-app-engine xpath beautifulsoup mechanize

我目前有一些Ruby代码用来刮掉一些网站。我当时正在使用Ruby,因为当时我正在使用Ruby on Rails创建一个站点,这只是有意义的。

现在我正试图将其移植到Google App Engine,并继续卡住。

我已将Python Mechanize移植到Google App Engine,但它不支持使用XPATH进行DOM检查。

我已经尝试了内置的ElementTree,但是当它碰到'& mdash'时,我在第一个HTML blob上窒息了。

我是否一直试图在那里破解ElementTree,或者我是否尝试使用其他东西?

感谢, 标记

5 个答案:

答案 0 :(得分:11)

美丽的汤。

答案 1 :(得分:6)

lxml - 比elementtree好100倍

答案 2 :(得分:4)

还有scrapy,可能更适合你的小巷。

答案 3 :(得分:0)

有许多使用pyparsing编写的网页抓取工具示例,例如this one(从yahoo.com提取所有网址链接)和this one(用于提取NIST NTP)服务器地址)。一定要使用pyparsing helper方法makeHTMLTags,而不仅仅是手工编码"<" + Literal(tagname) + ">" - makeHTMLTags创建一个非常强大的解析器,可以容纳额外的空格,大小写不一致,意外的属性,各种引用样式的属性值,等等。 Pyparsing还可以让您更好地控制特殊语法问题,例如自定义实体。它也是纯Python,自由许可,占用空间小(单个源模块),所以很容易使用其他应用程序代码直接进入GAE应用程序。

答案 4 :(得分:0)

BeautifulSoup很好,但它的API很笨拙。试试ElementSoup,它为BeautifulSoup提供了一个ElementTree接口。