5分SHAREツイートシェアはてブLINEPocketこんにちは、いろんな効率化が大好きなたぬ(@tanuhack)です!通常、Web上から目当ての情報を取得するときって、目当てのサイトに直接訪れて、情報を手動でGETすると思うんですよね。今回紹介する『スクレイピング』という技を使えば、なんと、Webサイトに訪れなくても情報を自動でGETすることができます!!!つまり、PCが決められたルールに従って、勝手に情報を集めて来てくれるという訳です。本格的なスクレイピングは、高度なプログラミングを要しますが、簡単なスクレイピングであれば、スプレッドシートに用意されている『IMPORTXML』という関数だけで実現することができます。注意スクレイピングはサイトによって、禁止されているところもあるので自己責任でお願いします。XPathクエリ)『情報をあつめたいURL』と『どの階層の情報を引き抜くか』を数式に記入するだけです。このサイト(https://tanuhack.com/)のタイトルを取得したいとします。“//title”)これだけです!たったこれだけで、タイトルを取得することができます!(※IMPORTXMLの値は、2時間毎に更新)この例では、“//title”の部分がXPathクエリです。次に、IMPORTXML関数の肝であるXPathについて紹介します。XPathについてXPathとはXPathとは、XML文章中の要素、属性値などを指定するための言語です。XPathを使うとHTML文章の中から、さまざまな情報を取得することが出来るようになります。XPathについて書くとそれだけで記事になってしまうので、割愛します。[aside]下のサイトに詳しくまとめてあったので、XPathについてもっと深く勉強したい方はどうぞクローラ作成に必須!XPATHの記法まとめ[/aside]でも、ご安心下さい。XPath今回は先程お見せした『たぬハックのタイトルを取得』する作業を実際にお見せしたいと思います。この方法は、この例にとどまらず、ほぼ全てのWebサイトで有効な手段です。GIFアニメも用意したので、導入も簡単だと思います!それではどうぞ。設定「...」を選択その他のツールを選択ディベロッパーツールを選択または、ショートカットキーを使って呼び出してもいいでしょう。chromeのショートカットキーMac:⌘+option+IWindows:Ctrl+Shift+Iもしくは、F12Webに携わる仕事をされている方であれば、開発者ツールを呼び出す機会はよくあると思います。毎回毎回ポチポチと、設定から開くのではなく、ショートカットキーで瞬時に呼び出した方がスマートでかっこいいです。開発者ツールから上の写真のアイコンを選択して、Webページのタイトルを直接選択します。開発者ツールのショートカットキーMac:⌘+Shift+CWindows:Ctrl+Shift+Cショートカットキーも用意されています。下図のように、右側にあるHTML部分がタイトルの1行だけ選択されていればOKです。Xpath]と選択します。//*[@id=”logo”]/p/aこのようなXPathがコピーされていれば成功です!簡単に説明すると、「HTMLのidがlogoのPタグのAタグの中身を表示します」みたいな感じのことが書いてあります。XPath機能をつかって色んなサイトでスクレイピングしてみましょう!スクレイピングの実例7個ここからはIMPORTXML関数を使って、スクレイピングができる汎用性がきっと高いだろうと思われるものを私の独断と偏見で7つ選んでみました。それぞれ、XPathを記載しているので、コピペでじゃんじゃん使ってください。ページのタイトルを取得ページのディスクリプションを取得ページのキーワードを取得Twitterのフォロワー数を取得Instagramの情報を取得Googleの検索結果を取得Googleのサジェストを取得ページのタイトルを取得titleタグのコンテンツを取得します。数式=IMPORTXML(“URL”,“//title”)2018年7月14日現在、ほとんどのサイトがHTML5で作られています。2000年代初期に作られた化石のようなWebサイト以外は、この記述だけでスクレイピングすることができるはずです。ページのディスクリプションを取得サイトの要約文であるmetaタグのディスクリプションを取得します。数式=IMPORTXML(“URL”,“//meta[@name=’description’]/@content”)ページのキーワードを取得metaタグのキーワードを取得します。数式=IMPORTXML(“URL”,“//meta[@name=’keywords’]/@content”)Twitterのフォロワー数を取得Twitterのフォロワー数もIMPORTXML関数で引っ張ってこれます。数式=IMPORTXML(“https://www.instagram.com/[アカウント名]”,“//meta[@name=’description’]/@content”)フォロワー数やフォロー数、投稿数などを個別に持ってくることが出来ないので、スプレッドシートの関数を使って表示を整えなければいけません。[aside]補足TwitterやInstagramのHTMLのソースを確認すると、JavaScriptでコードが隠されています。記事数だったり、記事毎のイイネ数やコメント数/内容、投稿時間など引っ張ってくるにはPythonやRubyなどのプログラムでゴリゴリ書かなければいけません(汗)[/aside]Googleの検索結果を取得IMPORTXML関数を使えば、なんとGoogleの検索結果も表示することができます。競合のリサーチや、SEO対策に使えますね!数式=IMPORTXML(“http://www.google.co.jp/search?hl=jp&gl=JP&q=”&[キーワード],“//div[@id=’res’]//h3[@class=’r’]/a/@href”)これとタイトルとディスクリプション、キーワードを組み合わせれば、SEO対策における競合分析のシートをサクッと作ることが出来ます。補足になりますが、URLパラメータの部分にnum=30のように追加すれば、そのキーワードにおける1位から30位までのサイトが表示されるようになります。Before:=IMPORTXML(“http://www.google.co.jp/search?hl=jp&gl=JP&q=”&[キーワード],”//div[@id=’res’]//h3[@class=’r’]/a/@href”)After:=IMPORTXML(“http://www.google.co.jp/search?hl=jp&gl=JP&num=30&q=”&[キーワード],”//div[@id=’res’]//h3[@class=’r’]/a/@href”)Googleのサジェストを取得IMPORTXML関数を使えば、検索補完のサジェストも取得することができます。次に書く記事候補を見つけたいときにおすすめです(^o^)数式=IMPORTXML(“http://www.google.com/complete/search?hl=en&output=toolbar&q=”&[キーワード],“//suggestion/@data”)さいごに今回は、IMPORTXML関数でスクレイピングする方法を紹介しました。IMPORTXML関数を使えば、PythonやRubyなどのプログラミングスキルを持たなくても、簡単なスクレイピングなら実行可能です。スクレイピングを体験して、『機械に仕事をさせてる感覚』を覚えて欲しいなと思います!!その経験こそが、効率厨にハマる沼でもあるのです。人間がわざわざ手を下すほどでもない単調な作業は、どんどん機械にやらせよう。:スクレイピング時間短縮この記事を書いた人たぬ効率沼ブロガールーチンワークを自動化で瞬殺することに人生の楽しさを見つけた効率沼ブロガーです。本業は「データ分析」と「作業の効率化」を生業としているデータアナリスト。PythonとGASに人生救われました。当ブログは、おかげさまで月間12万PV。2020年までに30万PV目指して頑張ってます。