Webスクレイピングを行いたいと考えたときに、スプレッドシートのImportXML関数が役に立ちます。
このページでは、ImportXML関数の使い方と使用例、またよくあるエラーの原因と対処法について解説していきます。
ImportXML関数の基本的な使い方
=ImportXML(URL, XPath)
URL | スクレイピングしたいサイトのURL |
XPath | HTMLの特定箇所を指定する文 |
XPath関数の更新頻度は2時間ごとです。要するに、2時間ごとに指定したURLページの情報を取得しにいく、という意味です。
XPathとは
XPathが何かを具体例で理解しましょう。
<html> <head> <title>タイトル</title> </head> <body> コンテンツ </body> <footer> フッター </footer> </html>
例えば上記のようなHTMLがあった場合に、タイトルの箇所を指定すると、次のようなXPathになります。
/html/head/title //title
1行目、2行目とも同じくタイトルを指定しているXPathです。「//」によってパスを省略できます。
XPathはこのように、複雑なHTMLの中の特定の個所を指定することに役立ちます。よりXPathを勉強したい方はこちらを参考にしてみてください。
ページ:XPATHの記法まとめ
使い方例:サイトタイトルの取得
先ほど紹介したタイトル個所を指定するXPathとImportXML関数を使用してこの記事のタイトルを取得してみます。
=ImportXML("サイトURL", "//title")
※サイトのHTML構造によっては、上記で取得できない可能性もあります。
Importxmlの使用例
例1:Tableを取得
今回はビットコインの現在の日本円価格をCoinGeckoというサイトから、ImportXML関数を使ってスクレイピングしてみます。
ビットコイン情報のtableの中にある、ビットコイン価格のXPathは「//tr[1]/td/span[@class=’currency-exchangeable’]」になるので、ImportXML関数を使用すると次のようにスクレイピングできます。
=IMPORTXML(A1,"//tr[1]/td/span[@class='currency-exchangeable']")
例2:サジェストを取得
そもそも「サジェスト」とは、Googleの検索窓に単語を入れたときに出てくる関連ワードです。サジェストはよく一緒に検索されているワードを出力しています。
サジェストを出力するためには、実際に特定の単語を検索したときのサジェストページを指定し、そのXML内のサジェストデータをXPath指定します。具体的には次のようにImportXML関数を使用すると、サジェストを取得できます。
=ImportXML("http://www.google.com/complete/search?hl=en&output=toolbar&q="&A1,"//suggestion/@data")
例3:検索結果を取得
Googleの検索結果1ページ目のサイトも、ImportXML関数でスクレイピングすることができます。
=IMPORTXML("http://www.google.co.jp/search?hl=jp&gl=JP&q="&A1,"//div[@id='res']//h3[@class='r']/a/@href")
例4:amazonのタイトルを取得
A1にamazonの商品ページのURLを入力すると、次のImportXML関数で、Amazonページのタイトルを取得できます。
=IMPORTXML(A1,"//title")
例5:Twitterのフォロワー数取得
ImportXML関数を使って、Twitterのフォロワー数を自動的に取得しています。
=IMPORTXML(A1,"//a[@data-nav='followers']/span[@class='ProfileNav-value']")
例6:インスタグラムのアカウント情報を取得
ImportXML関数を使って、インスタグラムのアカウント情報を取得すると次のようになります。フォロワー数や投稿数がテキストとして羅列されてしまうので、置換する関数などを用いて、上手に取り出しましょう。
=IMPORTXML(A1,"//meta[@name='description']/@content")
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]