少し前に、NMジョナサンヒルトンの父親が作成したサイトで、プレイヤーのUSCFレーティング履歴を分析していました。
結構いいサイトだと思いましたが、消えてしまいました。そのようなツールがまだ浮かんでいます。なんらかのUSCF APIがあるのか、あるいはそのようなデータがどのように取得されるのかと思っていました。
少し前に、NMジョナサンヒルトンの父親が作成したサイトで、プレイヤーのUSCFレーティング履歴を分析していました。
結構いいサイトだと思いましたが、消えてしまいました。そのようなツールがまだ浮かんでいます。なんらかのUSCF APIがあるのか、あるいはそのようなデータがどのように取得されるのかと思っていました。
回答:
私はAPIを認識していませんが、APIをセットアップしているため、スクリーン/ウェブスクレイピングと呼ばれる手法を使用してデータを収集するのは非常に簡単です。
たとえば、名前を検索すると、URLにメンバーIDが含まれる特定のページへのリンクが表示されます。次に、DOM対応のプログラミング言語/ライブラリがある場合、ページのデザインに基づいて、特定のものがどこにあるかを簡単に判断できます。jqueryセレクターといくつかのトラバーサルを使用して、そのページを解析し、そのような評価を取得できます。
> $("td td td:contains(Regular Rating)").next().find("nobr").text();
"2072
2012-03(Current floor is 1800)"
ちなみにいい評価です。
ページのデザインを変更することを決定した場合、それは少し苦痛であり、さらに苦痛ですが、最終的には必要なすべてのデータを解析し、各メンバーのデータを収集して保存する方法を構築することができます。分析のために独自のデータベースに保存します。それほど難しくはありません。メンバーIDを反復処理するだけで、メンバーの名前、状態、評価などを取得できます。
お役に立てば幸いです。
USCFに完全なAPIがあるとは思いませんが、簡単な画面スクレイピング/データ解析に使用できるいくつかの特別なURLがあります。
これらの「薄い」ページのそれぞれで、メンバーIDをurlパラメータ(たとえばthin3.php?11111111
)として渡すことができます。
サーバーの応答は非常に軽量です-無関係なマークアップはありません。
これらのページは、私が正しく覚えている限り、トーナメントの当日、TDが携帯電話のブラウザーで使用するために設計されましたが、データの抽出にも役立ちます。
現在、次のURLにこのためのAPIがあります:https : //uschessapi.azurewebsites.net/api/player/ {Id}
この場合、{Id} = USCFメンバーID
以下は、リクエスト/レスポンスの例です。
リクエスト-https://uschessapi.azurewebsites.net/api/player/13197795
応答(JSON)
{"memberId":"13197795","name":"JEREMY KRASIN","regularRating":"1828","quickRating":"1818","blitzRating":"1765","fideRating":"1749"}
現在は、Regular、Quick、Blitz、Fideの評価と名前が返されます。誰か質問があれば私にメッセージを送ってください。