総合案内:https://support.alexa.com/hc/en-us/articles/200461990-Can-I-get-a-list-of-top-sites-from-an-API-
なおこのAPIを使わなくても525位までならウェブサイトのスクレイピングで得られるらしいです。
https://qiita.com/saxsir/items/a85ee3c5fb9d3bd76dde
登録方法
AWSのコンソールにアクセスし、AWSのアカウントをつくります。クレカと電話番号が必要!1年間はAWSの無料期間ですが、Alexa Top Sitesは対象ではないようなので注意です!
登録したらコンソールでIAMの設定を画面に行きます。下の画像のように検索すれば出てきます。
ユーザの管理をクリック します。
アクセスの種類は2つとも選択して次に進んでください。
「ポリシーを作成」ボタンを押します。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "AlexaTopSites:GET" ], "Effect": "Allow", "Resource": "*" } ] }
図のようにエラーが出ますが、これはバグらしいので気にしないでください。

このあと、さっきの画面(「ポリシーを作成」ボタンを押した画面)に戻り、「既存のポリシーを選択」から今回作成したポリシーを選ぶ必要があったかもしれません。忘れました。
そのあと次へとか押すと作成が終わったと思います。
できたらアカウントの詳細画面で、認証情報タブを見ます。

APIの使用に必要なアクセスキーIDとシークレットを得るには、この「アクセスキーの作成」ボタンを押します。
シークレットは作成時にしか見ることができません。
見忘れたら作成し直してください。
Pricing
0.0025perURLreturned(e.g..25 for 100 URLs)
とあります。この料金は安いのか高いのかわかりません。
私は9万個のURLをfetchしたため税込241ドル(=27,000円くらい)払う羽目になりました。
Rate Limit
レート制限はないらしいです。
Sample code
公式(Getting Started with Alexa Top Sites)のサンプルコードにはPythonがないっぽいです。
オープンソースだと
というのがありました。2番目が使いやす気がします。
ダウンロードしてそのディレクトリに移動し、
ダウンロードしてそのディレクトリに移動し、
$ ./ats.py -country US -count 10 -secret <アクセスシークレット> -key <アクセスキーID> -start 200
とやると、200番目から10個のURLをfetchできます。
Alexa Top Sites APIは一度のクエリで最大1000件まで取ってこれます。
よって、1万件とかをfetchする際は、1000件ずつクエリを投げます。
そのときにこのオープンソースのats.pyというスクリプトは一切の待ち時間を挟まないでクエリを投げ続けるので、ときどきコネクションが確立できません。
(詳しくは忘れたけどとりあえず問題が起こります)
ats.pyの197行目、クエリを投げ続けるfor文の中にtime.sleep() でも挟んで少し待たせると良いです。
0 件のコメント:
コメントを投稿