I.はじめに
自分のアプリケーションを完成させるには、2色のボールの履歴データが必要です。したがって、さまざまなAPIインターフェースをオンラインで確認してください。ほとんどのインターフェースは課金されており、インターフェースは最新の50〜100期間の履歴データしか取得できないことがわかりました。何度も検索した結果、1日100回無料のクエリインターフェイスを提供できるWebサイトがようやく見つかりました。2003年の最初の号から現在までのすべての号をご覧ください。しかし、プログラマーとしての私たちにとっては、へへ。記事の最後に、自分のトークンを添付します。しかし、クリプトンゴールドがないため、1日あたりの呼び出しは100しかありません。運命の方は直接ご利用いただけます。このトークンを取得するには、実名認証が必要です。
第二に、プロセス
ウェブサイトに直接貼り付けます:
https://www.juhe.cn/docs
ここで宝くじを検索すると、APIを取得できます。
必要に応じて登録し(私のトークンを直接使用でき、登録する必要はありません)、このダブルカラーボールデータを購読します。次のようなインターフェースを取得します
。http ://apis.juhe.cn/lottery/history?key = afc556731226f0ea785fd87fe5383d62&lottery_id = ssq&page_size = 50&page = 1
スルーpagesize
和page
属性、我々は、一定期間の履歴データを取得することができます。返される結果は次のとおりです
。私はそれを見ると微笑まざるを得ません。JSON。はは、私はすぐにelasticsearchを使うことを考えました。
3、実践
私はローカルのajaxを取得することを考えていました。それを実行するために50回ループしました。しかし、テストにより、インターフェースがクロスドメインをサポートしていないことがわかりました!
したがって、jsonpを使用すると、それを呼び出すことができないことがわかります。インターフェースはjsonpをサポートできません。
何をすべきか?だから私の心は変わった。同じドメインを試しますか?APIインターフェイスを確認し、
http://apis.juhe.cn/ にアクセスしてみてください。
F12を押しました...
コンソールに入り、ajaxテストコードを入力します。Ajaxなし?問題ではありません。jquery.min.jsの内容をコピーして、コンソールに貼り付けます。もちろん、フェッチとネイティブのXmlhttpRequestを使用することもできます。
残りはライブラリを構築することです。esライブラリを構築し、js挿入コードを記述します。コードは以下のとおりです。elasticsearchを使用している場合は、コードをコンソールにコピーして実行できます。elasticsearchに慣れていない場合は、私のブログのJavaScriptを参照して、ElasticSearch(1)で遊ぶことができます。
もちろん、esをデータストレージメディアとして使用したくない場合は、コードを変更し、Blob
オブジェクトを使用してダウンロード用のファイルを作成できます。インターネットには多くの例があるので、掲載しません。
function req(page, callback) {
var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("get", 'http://apis.juhe.cn/lottery/history?key=afc556731226f0ea785fd87fe5383d62&lottery_id=ssq&page_size=50&page='+page, true); //打开连接
xmlHttp.onreadystatechange = function () {
try {
//判断是否成功返回数据
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
objData = JSON.parse(xmlHttp.responseText); //解析文本格式的json数据并赋给json对象
callback(objData.result.lotteryResList);
}
}
catch (err) {
alert(err); }
}
xmlHttp.send(null);//发送
}
function insertToES(data) {
data.lottery_no = Number(data.lottery_no);
$.ajax({
"type": "post",
"contentType": 'application/json',
"url": `http://localhost:9200/lottery_ssq/lottery_ssq?refresh=wait_for`,
"data": JSON.stringify(data),
"success": () => {
console.log(data.lottery_no + " 导入成功")
},
"error": (e) => {
console.error(data.lottery_no + "导入失败")
}
})
}
var page = 1;
var interval = setInterval(() => {
req(page, function (reqs) {
if (!reqs)
clearInterval(interval);
var length = reqs.length;
var index = 0;
var interval_inner = setInterval(() => {
if (index == length) {
clearInterval(interval_inner);
return;
}
insertToES(reqs[index++]);
}, 100)
page++;
});
}, 40000)
演算結果:
kibana截图:
4.結論:
私が使った二つのトークンをつければ、1日100回自由に使えます。毎回50アイテムで、1日に2回トークンが使える。
afc556731226f0ea785fd87fe5383d62
50656fe3d4ea32cd98c31c19192136b3
好きにしてください、ありがとう〜