2

我目前有一些用于抓取一些网站的 Ruby 代码。我使用 Ruby 是因为当时我在一个站点上使用 Ruby on Rails,这很有意义。

现在我正在尝试将其移植到 Google App Engine,并一直卡住。

我已经移植了 Python Mechanize 以与 Google App Engine 一起使用,但它不支持使用 XPATH 进行 DOM 检查。

我已经尝试过内置的 ElementTree,但是当它遇到“&mdash”时,它被我给它的第一个 HTML blob 卡住了。

我是继续尝试破解 ElementTree,还是尝试使用其他东西?

谢谢,马克

4

5 回答 5

11

美丽的汤。

于 2009-10-13T22:01:06.403 回答
6

lxml -- 比 elementtree 好 100 倍

于 2009-10-13T22:28:18.593 回答
4

还有scrapy,可能更适合你。

于 2009-10-13T22:29:49.300 回答
0

有许多使用pyparsing编写的网页爬虫示例,例如这个(从 yahoo.com 提取所有 URL 链接)和这个(用于提取 NIST NTP 服务器地址)。请务必使用 pyparsing 辅助方法 makeHTMLTags,而不仅仅是手动编码"<" + Literal(tagname) + ">"- makeHTMLTags 创建了一个非常健壮的解析器,可以适应额外的空格、大小写不一致、意外属性、具有各种引用样式的属性值等等。Pyparsing 还可以让您更好地控制特殊语法问题,例如自定义实体。此外,它是纯 Python、自由许可且占用空间小(单一源模块),因此很容易与您的其他应用程序代码一起放入您的 GAE 应用程序。

于 2009-10-13T23:01:53.223 回答
0

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

于 2009-11-25T00:18:51.997 回答