JavaScriptで外部ページを取得して解析するwebアプリをつくります。

まずHTMLソースを取得しなければなりません。C#であれば以下のようにすれば取得できます。

自分のサイト内であればfetch()メソッドで

JavaScriptであればfetch関数を使います。従来はjQueryによるAjaxやaxiosというライブラリを使わなければならなかったのですが、いまではfetchAPIという機能があるので以下の処理で外部ページを取得することができます。

もしそのページから貼られているリンクをすべて取得するのであれば以下のようにします。ただしこれができるのは自分のサイト内だけです。

自分のサイト内でない場合

自分のサイト内ではないページで同じようなことをしようとするとエラーが発生します。コンソールをみると以下のようなメッセージが表示されます。以下はYahoo! JAPANのリンクを取得しようとした場合のエラーメッセージです。

ではどうするか? phpを使って回避するのはどうでしょうか? get-data.phpというファイルを自分のサイト内にアップロードしておきます。これが実行されるとHTMLソースが表示されます。get-data.phpは自分のサイト内にあるので、クロスオリジン要求をブロックされることはないというわけです。

get-data.php

JavaScript

応用例

以下はテキストボックスに入力されたページからでているリンクの一覧を表示します。

index.js

get-data.php