我目前有一些Ruby代码用来刮掉一些网站。我当时正在使用Ruby,因为当时我正在使用Ruby on Rails创建一个站点,这只是有意义的。
现在我正试图将其移植到Google App Engine,并继续卡住。
我已将Python Mechanize移植到Google App Engine,但它不支持使用XPATH进行DOM检查。
我已经尝试了内置的ElementTree,但是当它碰到'& mdash'时,我在第一个HTML blob上窒息了。
我是否一直试图在那里破解ElementTree,或者我是否尝试使用其他东西?
感谢, 标记
答案 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接口。