Snoopy でHTMLを取得する
オープンソースで Snoopy と呼ばれる Web クライアントがあります。 Snoopy のサイトでは、 simulates a web browser と紹介されています。
ここでは、 Snoopy1.2 を使用して HTTP Response を取得してみます。
同じようなことが Pear の HTTP_Request パッケージでも可能です。 Snoopy の利点は、依存関係がないことかな。 HTTP_Request は、 Net_URL と Net_Socket が必要になります。
それでは、 Snoopy を使用して Amazon Web サービスの xml データを取得します。
<?php
require_once 'Snoopy.class.php';
$awsUrl = 'http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService';
$awsUrl .= '&SubscriptionId=「Amazonで取得したID」';
$awsUrl .= '&Operation=ItemSearch&SearchIndex=Music&Artist=Doobie%20Brothers';
$awsUrl .= '&ResponseGroup=Medium';
$objSnoopy = new Snoopy;
$objSnoopy->fetch($awsUrl);
$awsBuff = $objSnoopy->results;
print $awsBuff;
?>
Snoopy クラスをインスタンス化し fetch 関数でリクエストします。
Snoopy 内部でヘッダーと本体に分解され、本体はメンバ変数の results に格納されます。ヘッダーは、メンバ変数の headers に配列で格納されます。
レスポンスコードは、メンバ変数の response_code を参照することで取得できます。