2010年10月02日

atpagesにhtmlscrapingを導入するまでの道のり

いろいろあって、ダンジョンスペシャルはブラウザゲームにしようと思い立った。
さらに、現在借りているatpagesにphpでスクレイピングできる機能をつけて、
wikiあたりから自動でゲームのデータを読み込めるようにしてみようと思ったんだけど、
いろいろ試行錯誤が必要なようなので、その道程を記すこととする。
 
まずインストール

http://www.rcdtokyo.com/etc/htmlscraping/#DOWNLOAD

↑こちらからhtmlscriptingのソースをいただく。大変有用なライブラリを提供いただいて感謝。
atpagesはphp5が使えるので、ひとまずこのソースをアップロードして

<?php
require_once("htmlscraping/HTMLScraping.class.php");
$s = new HTMLScraping("cache/"); // キャッシュフォルダ
$xml = $s->getXmlObject("http://www10.atpages.jp/~himawarisou/", 3600, true);
// スクレイピングしたいファイル
foreach($xml->li as $list){
    echo "<li>".convert($list->a)."</li>";
}
?>

こんな感じのテストプログラムをアップロード。これでページにアクセスしたら動くはず・・・だが、当然のように動かない。

必要なライブラリをゲットする

まず「HTTP/Request.php」内で「PEAR.php」と「PEAR5.php」がないと言われる。

http://pear.php.net/package/PEAR/download

↑ここらからゲットする。そして「HTTP」のフォルダに配置する。

あと、同じく「HTTP/Request.php」内で、今度は「Net/Socket.php」がないと言われる。

http://pear.php.net/package/Net_Socket/download

↑ここからゲットする。そして「HTTP/Net」のフォルダに配置する。

さらにさらに、「HTTP/Net」の配下に「PEAR.php」がないとゴネるので、
先程ゲットしたPEAR.phpを「HTTP/Net」にも配置する。すると・・・

Fatal error: Cannot redeclare _pear_call_destructors()

こんなことを言って怒る。どうしろと。

でもまあ、PEAR.phpを二重に登録したから問題なんだろうな、と思って、Socket.phpを改造。22行目の「require_once 'PEAR.php';」をコメントアウトしたのち、先程アップロードしたばかりの「Net/PEAR.php」を削除する。すると。・・・

今度は「Net/URL.php」が見つからないと「HTTP/Request.php」さんがおっしゃる。
ここまで来たらなんでもいい。素直に言う事聞いて

http://pear.php.net/package/Net_URL/download

↑からダウンロード。「HTTP/Net」に配置。

で、今度は「Cache/Lite.php」の536行目でPEAR.phpを要求しているけどないよ!とおっしゃられるので、そいつもコメントアウト。
(かなり乱暴だな・・・)

ここまでしてやっと!!ライブラリ系のエラーがなくなった!!

が、実際テストプログラムを実行しようとすると

Fatal error: Uncaught exception 'Exception' with message 'Operation timed out'

だそうな。なぜタイムアウト。まだ何か問題が潜んでいるらしい・・・うむぅ。
posted by LoyalTouch at 23:36| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック