╭━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╮
まだプレゼント何にするか考えてないぞ!
╰━━v━━━━━━━━━━━━━━━━━━━━━━━━━━━━╯
そのようなサンタの方はamazonをスクレイピングしてプレゼント候補を見つけましょう。
しかしながら、必ずしも全てのサンタさん(親御さん)がコードを書けるわけではなく、クリスマスイブ当日に打ちひしがれている方もいらっしゃるのではないかと思いました。
そこで本記事では、Google SpreadSheetを活用したスクレイピングを紹介していきたいと思います。
本記事では従来のスクレイピングであるimportxmlを前段として紹介しています。
本題についてはImportFromWebの部分からとなりますので、前段部分は読み飛ばしていただいても構いません。
importxml関数
Google SpreadSheetに備え付けられた関数です。
URLとXPathからHTML要素を抜き出して表示することができます。
importxmlでyahooのトップページをスクレイピングする
まずは試しにyahooのトップページニュースタブにあるニュースをimportxmlでスクレイピングしてみます。
元のページは下の図の通り
これをスクレイピングしてスプレッドシートにまとめたものが以下の通りとなります。
yahooのページから情報を取得してまとめることができました。
【参考】 ページ要素からのXPath取得
- ブラウザの開発者ツール(F12キーで開きます)で、取得したい要素をクリックします。
- 該当するHTML要素の部分で右クリックして
copy > copy XPath
をクリックすると、クリップボードにコピーされるので、スプレッドシートに貼り付けてください。
importxmlでAmazonのページをスクレイピングできるのか
できません。対策されています。
スクレイピング対策を施しているサイトをスクレイピングするためには、ブラウザを自動操作して、DOM要素をページに出力してもらわなければなりません。
そのためによく使われるのがPython
のSelenium
ですね。
気が向いたらseleniumでスクレイピングしてBeautifulsoupで加工する記事も上げたいと思います。
革新的ノーコードスクレイピングImportFromWeb
それでは今年はスクレイピングできそうにない。
プログラミングを勉強して、クリスマスプレゼントを検索するのはまた来年になりそうだと、落ち込むにはまだ早いです。
chromeの拡張機能にImportFromWeb
というものがあり、こちらを使えばノーコードでスクレイピングできます。
むしろseleniumでコード書くより圧倒的に早く、私も驚きました。
Amazonのページをスクレイピングする
1. ImportFromWebのインストール
2. スプレッドシート上で拡張機能をオンにする
ただインストールして=importfromweb()
と打ち込むだけでは使えません。
拡張機能のタブから有効化しましょう。
Activate add-on
をクリック
3. AMAZON SEARCH RESULTS
のテンプレートを実行
Activateすると下の写真のようなサイドバーが現れると思います。
TEMPLATESタブからAMAZON SEARCH RESULTS
を選択しましょう
4. テンプレートに従ってスクレイピング
少しのロード時間の後、iPhone Coverの検索結果をスクレイピングしたサンプルが出てくると思います。
E3セルのチェックを外して、F5セルにクリスマスプレゼントと入力してみましょう。
検索結果がスクレイピングされて、スプレッドシート上にまとめられました。
ImportFromWebについて
今回は検索結果をスクレイピングしてみましたが、各商品のページ要素を取得したり、Amazon以外のサイトのテンプレートが用意されていたりと、想像以上に使いやすいものでした。
気になった方は試してみてください。
普通に検索するだけではダメなのか
特に問題ありません。