Webページから特定のものを抜き出すいわゆるWebスクレイピングが簡単にできないかと思って調べてみたところ、GoogleスプレッドシートのIMPORTXML関数を使えば簡単に抜き出せるとわかったのでその使い方の備忘録になります。
参考資料に公式のドキュメントとより詳しい解説をしているページ様を掲載していますので、気になる方は参照をお願いします。
では始めます。
1:IMPORTXML関数について
公式ドキュメントにあるように、構文は以下のようになっています。
IMPORTXML(URL, XPathクエリ)
第一引数は対象のWebページのURL、第二引数はXPathクエリを設定します。
XPathについてはこちらのページに詳しく書かれています。簡単に言うとWebページのhtmlタグの構造をパスの形で表したようなものです。
では実際にこの関数を使って抜き出してみます。
2:IMPORTXML関数を実際に使ってみる
実際の例として、今回は以下のようにIMPORTXML関数のドキュメントページ右側にある赤枠で囲ったリスト部分の文字列を抜き出してみます。
またブラウザはchromeという前提で進めます。
最初にIMPORTXML関数のドキュメントページを開きます。
「F12」キーを押してデベロッパーツール画面を開きます。
デベロッパーツールの左上にある四角と矢印のマークの部分を左クリックします。
その状態でWebページ上にマウスカーソルを動かすと表示させているタグ部分が色分けされます。
ひとまずページの左上にある「ドキュメントエディタヘルプ」というところにカーソルを合わせると、以下のようになりデベロッパーツール画面に該当箇所の記述部分が色付きで表示されます。
該当箇所(ここでは「ドキュメントエディタヘルプ」の文字部分)を左クリックをすると色付きの記述部分が固定されます。
デベロッパーツールの色のついた部分にマウスカーソルを合わせて右クリックし、出てきたメニューの「Copy」→「Copy XPath」を選択します。
これでXPathがコピーできました。実際にコピーできた内容は「//*[@id="material-bar-custom-product-name"]/a」です。
XPathがコピーできたのでスプレッドシートを開いて以下のように関数を入力します(「"」の部分は関数の文字列部分と混同するので「'」に変更してあります)。
IMPORTXML("https://support.google.com/docs/answer/3093342?hl=ja", "//*[@id='material-bar-custom-product-name']/a")
実際に入力してみると、以下のように少しロード時間があった後に「ドキュメントエディタヘルプ」の文字列部分がセルに反映されます。
ただしこのデベロッパーツールのXPathコピーではうまく抜き出せない場合があります。その場合はソースコードからうまく抜き出せるようなXPathを自分で記述する必要があります。
当初やりたかったリスト部分の抜き出しは以下のようになります。
IMPORTXML("https://support.google.com/docs/answer/3093342?hl=ja", "//a[@class='sibling-link']")
実際に抜き出すと以下のように各項目が抜き出せます。
以上がGoogleスプレッドシートのIMPORTXML関数を使ってWebスクレイピングする方法です。
Webスクレイピングするツールは色々ありますが、Googleスプレッドシートの関数を使って簡単にできるのでちょっとした部分の抜き出しをやるならかなり便利だと思います。
・参考資料