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 Web Services ガイドブック クラウドでWebサービスを作ろう!

Jeff Barr
インプレスジャパン (2011/2/18)
売り上げランキング: 29,462

---

メモ書き。

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内の日本語は厄介だわ。

モノづくりは楽しくてハマるけど、
実際にやってみると、それなりに大変だあね。
お疲れ様です。

月に100万稼げる「Amazon輸出」入門

山村 敦
日本実業出版社 (2012/12/22)
売り上げランキング: 188