我需要做一个涉及网络抓取的相当广泛的项目,并且正在考虑使用 Hpricot 或 Beautiful Soup(即 Ruby 或 Python)。有没有人遇到过他们认为在这个主题上特别好的教程,可以帮助我正确地开始这个项目?
5 回答
不是一个工具,真的,但很好的讨论是 Michael Shrenk 的书,Webbots, Spiders, and Screen Scrapers。
这本书在其既定使命上取得了很大的成功:解释了如何构建简单的网络机器人并按照社区标准进行操作。这不是你需要知道的一切,但这是我见过的最好的介绍。重点是简单的单线程机器人。有一些提到使用多个机器人将数据存储在中央存储库中,但没有讨论编写每秒可以处理数百页的多线程或分布式机器人所涉及的问题。
如果您对编写 Web bot 完全感兴趣,我建议您阅读本书,即使您不熟悉或不打算使用 PHP。但请确保不要期望超出本书提供的内容。
考虑使用lxml而不是 BeautifulSoup。尽管它的名字,它也用于解析和抓取 HTML。它比 BeautifulSoup 快得多,而且它甚至比 BeautifulSoup 更好地处理“损坏”的 HTML(他们声名鹊起 - lxml 并没有那么直言不讳)。如果您不想学习 lxml API,它也有适用于 BeautifulSoup 的兼容性 API。
没有理由再使用 BeautifulSoup,除非您使用的是 Google App Engine 或其他任何不纯 Python 的东西。
请看以下截屏视频:
- http://railscasts.com/episodes/190-screen-scraping-with-nokogiri
- http://railscasts.com/episodes/191-mechanize
或者,如果你喜欢它,相应的 asciicasts: