Alexaから、国別に人気のサイトのURLを取得できるAPIです。
総合案内: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
登録方法
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "AlexaTopSites:GET" ], "Effect": "Allow", "Resource": "*" } ] }
図のようにエラーが出ますが、これはバグらしいので気にしないでください。
このあと、さっきの画面(「ポリシーを作成」ボタンを押した画面)に戻り、「既存のポリシーを選択」から今回作成したポリシーを選ぶ必要があったかもしれません。忘れました。
そのあと次へとか押すと作成が終わったと思います。
APIの使用に必要なアクセスキーIDとシークレットを得るには、この「アクセスキーの作成」ボタンを押します。
シークレットは作成時にしか見ることができません。
見忘れたら作成し直してください。
Pricing
0.0025perURLreturned(e.g..25 for 100 URLs)
Rate Limit
Sample code
ダウンロードしてそのディレクトリに移動し、
$ ./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() でも挟んで少し待たせると良いです。
コメント