2011年11月1日 星期二

Web Scrapers

要談 Web Scraper ,PHP 好不容易趕上了某個 Check Point

Goutte 是 @fabpot 寫的一個 PHP Web Scraper ,基本上 API 與 Perl 的 WWW::Mechanize 類似,不過 Perl 的 WWW::Mechanize 卻是相當古老的東西了。

Ruby 的這個部分也是直接使用 WWW::Mechanize 的這個名稱: http://www.johnyerhot.com/2008/05/19/anatomy-of-a-ruby-web-scraper/

若查看 WWW::Mechanize 的 ChangeLog ,最早可追溯至 2002 年的 0.30 版本,而 LWP::UserAgent 更是可追溯到 1995 年。

再來提供 DSL 來撰寫 Scraper 的模組,是 miyagawa 所寫的 Web::Scraper ,ChangeLog 最早可追溯至 2007 年,而 Web::Scraper 基本上靈感來自於 Ruby 的 Scrapi ,可使用 DSL 來撰寫 Scrapper ,該 Ruby 模組最早也可追溯至 2006 年。

接著 2007 年中 phpQuery 計畫開始,2008 年,Ingy 寫了 pQuery ( porting jQuery to Perl )

而 PHP 比較成熟的 Web Scraper ,則是在最近幾年: Symfony2 內有一個 Crawler Class ( http://symfony2.openthinklabs.com/home/dokumentasi-symfony2/panduan/testing/crawler )

以及 Fabien Potencier 的 Goutte ( https://github.com/fabpot/Goutte )