Google拡張機能とGoogleSpreadSheetで簡単スクレイピング。

#環境準備
　Google ChromeとGoogleSpreadSheetかエクセルがあれば十分です。
　Pythonとか使いません。プログラミングもしません。エクセル関数は少し分かっていると便利かもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/63c40d7b-3675-834e-8274-d11f7a5c6009.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/18309782-f2d7-5ede-95b0-3f01678ac4ca.png)

#ScraperをGoogleChromeに追加する
　Google Chromeの拡張機能である[Scraper](https://chrome.google.com/webstore/detail/scraper/mbigbapnjcgaffohmbkdlecaccepngjd)を利用します。
[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/cbc85406-df89-2bfe-593f-e4ab4e46f012.png)
Scraper - Chrome ウェブストア](https://chrome.google.com/webstore/detail/scraper/mbigbapnjcgaffohmbkdlecaccepngjd)
　Scraperのアイコン![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/5adfcf56-2822-9730-90d3-78a30d331512.png)が検索バーの横に追加されれば準備完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/06c0b1af-fd2c-48be-8740-348695c9c2bf.png)
こんな感じ。

#Kindleの購入履歴をスクレイピングしてみる
　今回はKingleの購入履歴から、これまで購入した書籍のタイトル、著者、購入日をまるっと取得してみたいと思います。
　選択してコピペするだけでも情報は取得できますが、一ページに収まりきらない場合、何度もコピペを繰り返すことになり非効率的です。一瞬で全データを取得してみましょう。

#スクレイピングしたい要素を特定する
1. まずはスクレイピングしたいページをGoogleChromeで開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/a4e1ab42-f393-b491-5903-91a19b05ad82.png)

1. キーボードの「F12」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/d68d7ef1-956d-1fa1-ba31-f7fcf43601f8.png)
1. 画面左上のボタン![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/7358edd7-d0af-62a4-ddba-4debc76be9d7.png)をクリックします。ボタンの色が変わります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/69c1f2aa-d9bb-99d9-23ac-e4d99ddab71c.png)

1. この状態でサイト上の取得したい要素の上にカーソルを当てると…要素の識別子が表示されます。左端の紫色の文字をメモっておきましょう。（紫以外の部分も役立てることができますが、難しいです。うまく使うと最初から欲しい要素のみ抜き出せます。学習コストが高いのでちょっとやってみたい人は手を出さなくていいです。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/329decb6-1b07-253a-8805-446cd916b887.png)

#Scraperを使う
1. 取得したいサイトを開いた状態で、Scraperのアイコンをクリックします。
このアイコンです。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/5adfcf56-2822-9730-90d3-78a30d331512.png)

1. メニューが表示されるので「Scrape similar...」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/2b14e0ab-bef6-60ce-b008-5ea71d7f6c08.png)

1. こんな感じの画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/b096b58a-878e-64aa-b893-7aec0ee062b9.png)

1. 欲しい要素を取得してみましょう。とりあえず、Selectorで「XPath」を選択して先ほどメモした紫色の文字の部分を入力します。メモした文字の前に「//」をつけましょう。今回は「//div」と入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/ead92c06-bf94-998b-1776-ea19a7638d12.png)

1. ColumnsのXPathに「text()」を入力してみましょう。Nameはなんでもいいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/91902ca1-d953-5765-67bd-47e01aafb9ce.png)

1. Scrapeボタンを押しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/607eca94-c532-c0ec-da9a-50d3d63300eb.png)

1. こんな感じでサイトに表示されていたテキストが取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/ecde19c6-2dd0-b32a-2467-b3b29efc6b7e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/fcf3f0a1-ea07-f114-1eae-b538a36ac259.png)
が…不必要なデータ（「ローン」とか）が含まれていたり、書名、著者名、日付が縦に並んでしまってとても見辛いです。データを整形してみましょう。

#データを出力する
一画面ではデータが表示しきれませんし、これではデータ操作ができません。
そこで、「Export to Google Docks...」をクリックしてGoogleSpreadSheetに出力します。（「Copy to clipboard」をクリックしてコピーしエクセルに貼り付けてもいいです。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/238a4292-aa0c-7368-374a-e2dc2d7d5e9c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/3cc415fa-85cd-17b1-4b5e-b56cf5669dab.png)
こんな感じに出力されます。

#整形する
関数を使って必要な行の情報だけ取得します。
データはタイトル→ローン→著者名→購入日→コンテンツへの登録数の順に規則的に並んでいるので、関数を使えば簡単に整形できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/6ad141a8-e52f-9f01-f679-9757139e6ffa.png)

整形の仕方は下記のリンクを参照してみてください。
[1列に羅列されたデータを複数の列で並び変える方法(EXCEL) | 東京文久堂 | 東京文久堂](https://bunkyudo.co.jp/tokyobunkyudo-news/excel/1%E5%88%97%E3%81%AB%E7%BE%85%E5%88%97%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%A4%87%E6%95%B0%E3%81%AE%E5%88%97%E3%81%A7%E4%B8%A6%E3%81%B3%E5%A4%89%E3%81%88%E3%82%8B%E6%96%B9/)
[Excel（エクセル）で１列のデータを２列や３列などの複数列に分ける方法 | Prau（プラウ）Office学習所](https://prau-pc.jp/excel/more-than-one-lines/)

今回は作業用列と関数を使いました。

``` 
=indirect(ADDRESS(row()+B$44+$F46*4,1))
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/5c6a4bca-70da-62cf-bf2f-5bb761b18327.png)

こんな感じの仕上がり。雑ですが、欲しい情報は取れました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268023/84f1f6e4-d482-119a-eccf-d54eba983f8d.png)

#感想
　最初はXPathのところで手間取ったので30分くらいかかりました。
XPathで要素を抽出することを諦めて、GoogleSpreadSheetで処理したらすぐに片付きました。よくわからないことに拘らず、他の簡単な方法を探すのはすごくありです。それぞれ得意不得意あるので、得意な処理の仕方を使いましょう。
　お伝えしたかったのは、プログラミングなんてできなくても、スクレイピングはできるということです。簡単に使えるツールはたくさんあります。GoogleSpreadSheet自体にもスクレイピングができる関数があります。
　難しそうと敬遠せずに調べてみると色々できるようになって楽しいです。プログラミングできないと言う人も是非スクレイピングしてみてください。便利です。