AmazonのWEBサービスについて質問です。


ASINコードを入力すると、タイトルや著者名などをAmazonから取得し、それをデータベース(MySQL)に格納するようなシステムを作りたいと思います。

自分でもこれから調べてみますが、大まかな流れとしてどのような仕組みを使えばいいでしょうか?

とりあえず大雑把な感じで構いませんのでアドバイスください。

PHPとMySQL暦1ヶ月程度です。
RESTで取得するとxmlで返ってくるらしいのですが、xmlをどのようにMySQLに格納するのか検討も着きません。

みなさんよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/03/29 12:27:47
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:bonlife No.1

回答回数421ベストアンサー獲得回数75

ポイント60pt

おおまかな流れを説明いたします。

XMLをそのままMySQLに格納しても使い勝手が悪いので、分解して個々の値を取得し、それをMySQLのテーブルに格納する方向で話を進めます。


[事前作業]

  • 格納したい情報を整理し、MySQLに適切なテーブルを作成
  • AWSを利用するために開発者用のIDを取得


  • ASINを入力するテキストフィールドを持ったフォームを作成
  • 入力されたASINコードをPHPプログラムに渡す
  • PHPプログラム側でそのASINコードを元にREST用の文字列を生成
    • (事前に妥当なASINかPHPプログラムで判定した方が良いかもしれません)
  • simple_xml_load_fileにその文字列を渡し、結果をオブジェクトで取得
    • PHP4の場合は、PEARのXML_Parserあたりを使えば良いと思います
  • 正しく取得できた場合、結果のオブジェクトから必要な情報を取り出し、SQL文(INSERT)を生成
    • var_dumpprint_rでオブジェクトの内容を一度確認しておくと、その後の処理のイメージがつかめるはず
  • MySQLに接続してSQLを実行
  • MySQLの結果を画面に表示 (成功 or 失敗 etc.)


少しでも参考になれば幸いです。

id:tokyosmash

丁寧にありがとうございます。

大まかな流れは理解できました。

とりあえず

xmlをMySQLに格納するところから始めてみようと思います。

使っているサーバーがPHP4だったのでPHP5のを借りてsimple_xml_load_fileを試してみました。

頑張ればなんとかなりそうな気配です。

どうもありがとうございました。

2007/03/23 10:31:31

その他の回答4件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数75ここでベストアンサー

ポイント60pt

おおまかな流れを説明いたします。

XMLをそのままMySQLに格納しても使い勝手が悪いので、分解して個々の値を取得し、それをMySQLのテーブルに格納する方向で話を進めます。


[事前作業]

  • 格納したい情報を整理し、MySQLに適切なテーブルを作成
  • AWSを利用するために開発者用のIDを取得


  • ASINを入力するテキストフィールドを持ったフォームを作成
  • 入力されたASINコードをPHPプログラムに渡す
  • PHPプログラム側でそのASINコードを元にREST用の文字列を生成
    • (事前に妥当なASINかPHPプログラムで判定した方が良いかもしれません)
  • simple_xml_load_fileにその文字列を渡し、結果をオブジェクトで取得
    • PHP4の場合は、PEARのXML_Parserあたりを使えば良いと思います
  • 正しく取得できた場合、結果のオブジェクトから必要な情報を取り出し、SQL文(INSERT)を生成
    • var_dumpprint_rでオブジェクトの内容を一度確認しておくと、その後の処理のイメージがつかめるはず
  • MySQLに接続してSQLを実行
  • MySQLの結果を画面に表示 (成功 or 失敗 etc.)


少しでも参考になれば幸いです。

id:tokyosmash

丁寧にありがとうございます。

大まかな流れは理解できました。

とりあえず

xmlをMySQLに格納するところから始めてみようと思います。

使っているサーバーがPHP4だったのでPHP5のを借りてsimple_xml_load_fileを試してみました。

頑張ればなんとかなりそうな気配です。

どうもありがとうございました。

2007/03/23 10:31:31
id:vs-minoru No.2

回答回数12ベストアンサー獲得回数0

ポイント20pt

AMAZONのRESTで受け取ったXMLデータを配列にすればデータの処理が簡単になるかと思います。

XMLデータを配列にするにはPEARにXML_Serializerというものがあるので、それを利用するといいかと思います。

PEARとはPHPで利用できるライブラリを提供しているサービスで、他にもいろいろあります。

[参考URL]

PEAR XML_Serializer

上記URLでXML_Serializerをダウンロードすることができます。

[参考URL]

PHPとAjaxと

で実際にXML_Serializerを使ったスクリプトがダウンロードできます。その中で「AMAZON(アマゾン)のブラウズノード検索」や「YouTube検索」が

参考になるかと思います。

id:tokyosmash

ライブラリってよく見るのですが、いまいち何なのかわからないのです。simple_xml_load_fileを使うのが一番簡単そうなのでPHP5のサーバーを借りました。

とにかく配列にしてMySQLに格納するところからチャレンジしてみようと思います。

2007/03/23 10:33:04
id:takuchan_no2 No.3

回答回数87ベストアンサー獲得回数3

ポイント20pt

XMLの内容をを取得してMySQLに送りたい、ということですよね。

それならPHPには最適なライブラリが付属しています。それがSimpleXMLです。

検索すると色々出てきます。

SimpleXML関数でRSSしてみる

http://www.doyouphp.jp/php5/php5_simplexml.shtml

AmazonAPIに関しては自分は利用してことがないのですが、教えてgooに質問がありました。

PHPとAmazon API

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2114710

id:tokyosmash

いやーほんとにシンプルですねSimpleXMLは。

持っていたリファレンスの通りにやってみると配列っぽくなりました。ただ配列をMySQLに格納するのさえどうすればいいのかわからないレベルなので少しづつ進んでいこうと思います。

あと2バイト文字の取り扱いにも苦労しそうです。UTF-8?に変換する必要があるのでしょうか。その辺りもよくわからないので困ったらまた質問させて頂きます。

2007/03/23 10:36:40
id:ryouchi No.4

回答回数23ベストアンサー獲得回数1

ポイント10pt

http://www.itmedia.co.jp/enterprise/articles/0501/17/news004.htm...

少し記事が古いですが、私はこれで一連の流れが理解できました。

・Amazon Webサービス登録手続き

・アソシエイトID取得

・簡単なアプリケーション(REST)

とひとまず一通りのことはできそうです。

id:tokyosmash

AmazonからのXML取得に関してはこちらのページでほぼできました。今更ながらXMLって便利そうですね。そしてAmazonって太っ腹ですね。

2007/03/23 10:38:39
id:ryouchi No.5

回答回数23ベストアンサー獲得回数1

ポイント10pt

http://jp2.php.net/manual/ja/ref.simplexml.php

>RESTで取得するとxmlで返ってくるらしいのですが、xmlをどのようにMySQLに格納するのか検討も着きません。

こちらに関しては取得したXMLをsimpleXMLで処理し、PHPで配列変数として処理できるようにし、foreachで配列を処理し、mySQLでinsert/update/delete処理をするイメージですね。

取得できない場合のロジックも考えておく必要があると思います。

  • id:tokyosmash
    みなさん回答ありがとうございます。
    「何を使って何をすればいいのか」はぼんやりわかりました。

    これから一つ一つの処理を作っていこうと思います。
    わからない事がありましたらまた質問させて頂きます。
    もし私を見かけましたらよろしくお願いします。

    それにしてもAmazonは凄いですね。
    あれだけのデータベースを無償で加工OKな状態で提供する潔さに今更ながら凄いなーと思ってしまいます。

    そしてWEBサービスは「利用する」だけじゃなくて、「作ってみる」と楽しいし勉強になります!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません