現在EATradeStopの英語指標(ec.Forexprostools.com)及び英語指標の翻訳版が取得できなくなっています。
結論から言いますと、対応が終わるまでは、英語指標をお使いの方は日本語の指標をご利用いただきますようお願いいたします。
【追記】対応が終わりました。Ver2.xx以降であればおそらく英語指標の表示ができるようになっていると思います。(Ver1.xx以前の場合、私のサーバーからではなく、直接forexprostoolsを参照しているため今後も英語指標は使用できません。)
現状と調査
ブラウザでは表示できますが、MQL4やPHPから取得しようとすると何も返ってきません。(エラーもなく、データを1バイトも返してきません。)
そこでPuppeteerを使ってヘッドレスブラウザによる取得を試みました。すると今度は「Verifying you are human. This may take a few seconds.(あなたが人間かどうか確認しています。これには数秒かかる場合があります。)」と表示されたまま返ってきません。
思った以上に強固なスクレイピング対策されていました‥。
EATradeStopのVer2.xx以降ではサーバーが1時間毎に取得し、それを各EATradeStopに配布する形にしたので負荷はそれほど無いはずなのですが‥。他にもスクレイピングしている人がいるのか、私の行為が気に入らないのか、いずれにしてもここからデータを取得するのは諦めた方がよさそうです。
データ取得先の選定
LiteFinance
実はForexprostoolsを使用する前にLiteFinanceのデータを使っていました。
そのため、LiteFinanceのデータを取得するロジックが残っています。仕様が変わっていなければ使えるはずです。
と思ってやってみましたが、仕様が変わったのか画面には表示されませんでした。(データは取れますが、仕様変更のため、スクレイピングに失敗しているようです。)
ちなみにこのサイトの使用をやめたのは受け取るデータが巨大(Forexprostoolsの100倍以上のサイズ)で非常に重く、海外の知人から「forexprostools.comを使えないか?」という情報をもらったからです。
というわけで、ここで頑張るより他の方法を考えます。
investing.com
forexprostools.comはこのinvesting.comのデータを使っています。つまりパクリです。
私はパクリデータをパクっていただけだったのです!(笑)
investing.comでは気軽に利用できるようになっている(パクリOK!です)ので、私でもforexprostools.comのようなページを作ることは容易でした。
というわけで、数分で完成!
最初からこうすればよかった‥。
【追記】これだとAjaxでデータを取って仕組みのため、単純なHTMLのようにスクレイピングができませんでした。ちょっと工夫が必要です。
スクレイピング処理の実装について
おそらくforexprostools.comの処理とほぼ同じはずなので、ちょっと修正すれば使えるはずですが、EATradeStopでスクレイピングするのではなく、私のサーバー側でスクレイピング処理をして、最小限のデータをEATradeStopに渡すように変更したいです。
【追記・修正】forexprostools.comとまったく同じだったようで、修正しなくてもEATradeStopの表示が可能でした。というわけで、とりあえず対応は完了になります。
今後の改修で、サーバー側にてスクレイピング処理をして、最小限のデータをEATradeStopに渡すよう変更したいです。
こうすることでダウンロード時間もスクレイピング処理時間も減らせるのでEATradeStopの動作速度の向上になります。
開発に少しお時間をいただくことにはなってしまいますが、ご了承いただきますようお願いいたします。
コメント