Amazon検索&アフィリエイトが、なんか使いづらいので、ツールを自作してみるかな。
愚痴です^^
てきとーに読み飛ばしてください。
Amazonアフィリエイト。
(https://affiliate.amazon.co.jp/)
楽天よりも、Amazonを利用することの方が多いので。
普段リンクするなら、こちらがメイン。
楽天の方は品数が豊富なんだけど。
楽天アフィリエイトは、ちょっと使いづらくて敬遠してる。
ツールも作りづらいし。 公開プラグインがない?
(http://affiliate.rakuten.co.jp/)
Amazonの検索ツールを作ろうかなあと思って。
ちょー久しぶりにPerlをいじってみた。
というのも。
Amazonツールを開発するのにプラグインが用意されてる。
しかし、そのプラグインを使うには、いろいろと面倒だった。
一番ネックだったのがサイトに登録する必要があるという点。
クレジットカードの登録&電話確認まで必要っぽいorz
しかも、アクセス数が少ないと検索制限を受ける仕様だ。
CGIを動かそうとしてみたら未だにPerl4しか使えない。
Perl5が使えないと、Amazonプラグインが使えない?
(Perl4だと、オブジェクト指向が使えないので)
Perl5が使えない → LWP や HTML が使えない。
Perlでツールを作るのに、コレは致命的かもな。
ああ、そっか。
Niftyで試せばいいんだよな。
(なんか気が重いからやってない)
プログラミングの勉強をするならば、
結城浩氏の本がわかりやすくて良い。
基礎もしっかりしてる。
---
とりあえず、SocketとFileHandleを使えば、
通信&データ取得まではできそうなことがわかった。
でも、なかなかうまくはイカナイ。
うーむ。
<div id="result_0" … > …
<div id="result_1" … > …
<div id="result_2" … > …
…
<div id="result_15" … > …
<div id="result_16" … > …
になるかと思ったら、
<div id="result_1" … > …
<div id="result_4" … > …
…
<div id="result_17" … > …
おいおい。
ぜんぜん足りてないぞ?
ようやくデータを取れたと思ったら、所々に抜けがある。
・・・なぜに!?
原因がわからん。
スレッド処理にしないとアカンのか?
うわぁ、挫折しそ。
他のツールを使って、接続を確認してみた。
意外と多くのやりとりをしてるんだな。
*** スレッドを開始します
*** www.amazon.co.jpが見つかりました
*** www.amazon.co.jp(176.32.120.142):80にconnect成功しました
*** サーバへリクエスト送信
GET /s/ref=nb_sb_noss?__mk_ja_JP=カタカナ&url=search-alias%3Daps&field-keywords=ここに+キーワードを+入力する HTTP/1.0
User-Agent: …
Cookie: session-id=378-0484797-3702920;session-id-time=1990946882l;
Connection: close
Host: www.amazon.co.jp
Referer: http://www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=カタカナ&url=search-alias%3Daps&field-keywords=ここに+キーワードを+入力する
Accept: */*
*** サーバからのレスポンス
HTTP/1.1 200 OK
Date: Thu, 07 Feb 2013 08:56:12 GMT
Server: Server
x-amz-id-1: D1E4E609C25A4FA4A776
x-amz-id-2: OOr9bfxFMh6PaU28wFsuOedh+Ux+FrfhOvrQiTp5ABk=
Content-Type: text/html;charset=UTF-8
Vary: Accept-Encoding,User-Agent
Set-Cookie: ubid-acbjp=375-6258640-2870808; Domain=.amazon.co.jp; Expires=Wed, 02-Feb-2033 08:56:12 GMT; Path=/
Connection: close
*** www.amazon.co.jp:80から切断します
*** ダウンロードに成功しました
*** スレッドを終了します
ちゅか、製作の初期段階からテストでネット接続しまくると、
サイトに余計な負荷がかけてしまうのかもなあ^^
・・・反省orz
(頭が錆びてて、ボケボケすぐる)
ああ、Perlというか、正規表現は書きづらい&読みづらい。
もっと簡単な言語で書きたい。
PHPとかRubyとか。 今はなんだろう? さっぱりわからん。
JavaScriptなら、もう少し楽かも? まあ、いいか。
既存の便利なプラグインが使えないと、
いろいろと面倒なのを再確認できた。 Java恐るべし。
そっか、構文解析だ!
XMLとHTMLって何が違うんやろ?
・・・話が飛びすぎて困るorz
問題点を洗いなおしてみよう。
・データは取得できたけど、所々に抜けがある。
・HTML文書の解析が必要。
・複数キーワードの入力は面倒そう。
・・・
・どうしたいかが、まだ不明確。
・そもそもPerlでいいのか?w
結局、ネックになってるのは通信&文字列の処理っぽい。
このままだと、「TITLE」と思った。。。で終わりそうな予感。
---
メモ書き。
Amazon カテゴリー選択は、
amazon.co.jpのソースからコピペできそう。
カテゴリー :
<select name="url" id="searchDropdownBox" class="searchSelect" title="次の中から検索" >
<option value="search-alias=aps" selected="selected">すべてのカテゴリー</option>
<option value="search-alias=stripbooks">本</option>
<option value="search-alias=english-books">洋書</option>
<option value="search-alias=digital-text">Kindleストア</option>
<option value="search-alias=dvd">DVD</option>
<option value="search-alias=popular">ミュージック</option>
<option value="search-alias=classical">クラシック</option>
<option value="search-alias=digital-music">MP3 ミュージック</option>
<option value="search-alias=mi">楽器</option>
<option value="search-alias=videogames">TVゲーム</option>
<option value="search-alias=electronics">家電&カメラ</option>
<option value="search-alias=computers">パソコン・周辺機器</option>
<option value="search-alias=software">PCソフト</option>
<option value="search-alias=office-products">文房具・オフィス用品</option>
<option value="search-alias=kitchen">ホーム&キッチン</option>
<option value="search-alias=pets">ペット用品</option>
<option value="search-alias=food-beverage">食品&飲料</option>
<option value="search-alias=hpc">ヘルス&ビューティー</option>
<option value="search-alias=beauty">コスメ</option>
<option value="search-alias=baby">ベビー&マタニティ</option>
<option value="search-alias=toys">おもちゃ</option>
<option value="search-alias=hobby">ホビー</option>
<option value="search-alias=apparel">服&ファッション小物</option>
<option value="search-alias=shoes">シューズ&バッグ</option>
<option value="search-alias=jewelry">ジュエリー</option>
<option value="search-alias=watch">腕時計</option>
<option value="search-alias=sporting">スポーツ&アウトドア</option>
<option value="search-alias=diy">DIY・工具</option>
<option value="search-alias=automotive">カー・バイク用品</option>
<option value="search-alias=appliances">大型家電</option>
</select>
ふむふむ。
たくさん、あるなあ^^
検索結果、ソースの一部。
<div id="atfResults" class="list results apsList">
<div id="result_0" class="fstRow prod" name="479668591X">
<div class="linePlaceholder"></div>
<div class="image imageContainer">
<a href="…_.jpg" class="productImage" alt="商品の詳細"/></a>
</div>
<h3 class="newaps">
<a href="…" target="_blank"><span class="lrg bold">タイトル名 </span></a>
<span class="med reg">タイトル名 (2012/7/21)</span>
</h3>
<ul class="rsltL">
<li class="newp">
<a href="…" target="_blank"><span class="bld lrg red"> ¥ 2,100</span><span class="lrg">単行本</span></a>
</li>
…
</ul>
<br clear="all">
</div>
Amazon検索結果のソースを見てみると、
商品名、ASINコード、画像、タイトル名、価格、カテゴリ種別、
商品やカスタマーレビューへのリンク、などが取得できそうだ。
発売日やAmazonへの登録日付は、その先を見ないとダメかな。
商品の説明、販売や発送の店がどこか、等も。
ソースで読めない&文字化けするのは、
文字コードの関係だろう。 UTF-8だから、文字はすべて数字。
ところどころ、それ以外のも混じってるし。
HTML内の日本語は厄介だわ。
モノづくりは楽しくてハマるけど、
実際にやってみると、それなりに大変だあね。
お疲れ様です。