開発をしないスクレイピングのすゝめ

# はじめに

以下の方に向けた記事です。
・何かの用途でスクレイピングなどでWebで表示した情報を抽出したい人
・BeatifulSoupやNokogiriなどを使おうか検討している人。

上記のため、ライブラリを試したり、実装することが目的の人には向きません。
スクレイピングで得られる結果を最短で求めている人向けです。

# スクレイピングとは
https://qiita.com/ScrapeStorm-JP/items/d320fe730b779bec60f5

# 注意事項
https://qiita.com/nezuq/items/c5e827e1827e7cb29011

# 主訴
開発や実装をせずに目的を達成するために、スクレイピングを実装する。
スクレイピングのライブラリなどを実装したい場合は、別記事を探してください。
本稿では紹介しません。

# ゴール
この記事では、Webページに表示されているHTMLの
テキストやリンクなどを抽出することをゴールとします。
この拡張機能は、Webページ内のテキスト・リンク・画像などを自動で抽出できます。
具体的なイメージとして以下の画像を見てください。
※画像はイメージで実際にスクレイピングは実行していません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/dba55bf3-7b23-618b-70cf-2f6181eb3301.png)

この画像は、抽出するデータのセレクター指定した時の画面です。
該当の項目を２箇所以上クリックすることで要素を自動的に検知してくれます。
この機能を利用して開発しないスクレイピングをやっていきましょう。

# 準備編

今回は[Web Scraper - Free Web Scraping](https://chrome.google.com/webstore/detail/web-scraper-free-web-scra/jnhgnonknehpejjnehehllkliplmbmhn?hl=ja)を使用します。

上記リンクからchoromeウェブストアに遷移します。
以下画像のような拡張機能の紹介ページになっているので、
[choromeに追加]ボタンを押下してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/498400c0-bc3a-28ed-ac3a-30fd63a095b5.png)

インストール完了後は以下の画面に遷移します。
このサイトでアカウントを作ってログインは、今回ご紹介する機能では不要です。
今後の運用次第で検討してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/f520344f-f411-5c3d-1ced-232a69db0316.png)


# 設定編

さて使い方ですが、このツールはChromeの開発者ツール(developperTool)で設定をしていきます。
非エンジニアの方にとっては、触るのがちょっと怖い画面かもしれませんので、画像を付けながら
説明していくので一緒にやってみましょう。

今回はあくまでスクレイピングをするまでの手順をご案内します。
実際のサイトが、スクレイピングなどを行なって良いかという観点は
robot.txtを参考にしてご自身で判断してみてください。

今回、公式が用意している[テストサイト](https://www.webscraper.io/test-sites/e-commerce/allinone)があるのでそちらを利用します。

以下いずれかの方法で開発者ツールを起動します。
　・F12キーを押す
　・右クリックで検証を押す

画像の赤い部分にある[Web Scraper]の項目をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/60a5a9b1-caf7-9796-a0ad-e54b8061532b.png)


上記をクリックすると、[Web Scraper]メニューに遷移します。
まずはどのサイトでスクレピングをするのかを登録します。
メニューの[create new sitemap]を押下し、サブメニューの[create sitemap]を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/a02d4555-65b0-4722-4b90-11bc481426be.png)

任意の名前とURLを入力して、[create sitemap]ボタンを押下してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/6c7ba9f9-91d4-f4b3-ebcd-3cbc548b2284.png)

最上位のsitemapが出来上がったので、どの値をスクレイピングするか
[Add new selector]ボタンでセレクターを登録していきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/82f97d14-a47b-b111-7c03-2cdd865abde3.png)

※セレクタとはどの要素を抽出するか判定する際の名称です。
　webscraperではあまり意識しなくても大丈夫です。
　上記の抽象概念が理解できていれば大丈夫なので、ここでは詳しくは説明しません。
　[公式ドキュメント](https://www.webscraper.io/documentation/selectors)があるので気になる方はこちらを参照してください。

さて、以下が[Add new selector]後の画面です。
フォーム形式になっており、それぞれ画面の意味を説明します。

id:セレクタの任意の認証
Type：取得する要素の種類
Selector：セレクタ、クリックで選択して、選択ができているかプレビューで確認できます。
Multiples：要素が複数ある場合はこのチェックボックスにレ点を入れてください。
Regex：正規表現ですが、今回は使用しません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/2b53a227-3ae8-587a-362e-4b78e222f10e.png)

ちなみにTypeは全13種類あります。
よく使うにはText Link Image Tableあたりです。
取得する要素が何に該当するかは、検証のページソースから判断してみてください。
今回はTextにします。
![スクリーンショット 2022-05-29 14.25.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/b4f77c15-cbfc-1d5e-15cf-a65db78d3de3.png)

ここからは肝心のセレクターの要素を選択し、抽出したいデータを取得します。
画像の通り、[selector]ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/adb64640-76db-47c8-8257-ec56c4c1e240.png)
今回はこのテストサイトのメニュー名の「Home,Computers,Phones」３つを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/964df2d7-d9bb-af6f-8c5e-31ae45fe55dd.png)
まず、selector押下状態で[Home]の要素にマウスを持っていくと、
Homeの要素が黄色く色づきます。
![スクリーンショット 2022-05-29 16.02.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/92bdaf14-e473-8674-11c5-7d095a79fd38.png)
ここで黄色になった箇所をクリックすると赤くなります。
![スクリーンショット 2022-05-29 16.06.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/042d0f86-2f9d-8c64-7154-bc3320df0b3b.png)
赤くなった箇所はスクレイピングの抽出対象となります。
選択した箇所が１つで良い場合は、[Done selecting]を押下し、確定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/538e2f76-12b4-3ddf-2985-5f60b1c690df.png)

複数選択したい場合は、１つ目の要素から連続する同じ要素をクリックすると
類似する連続した要素を自動で選択されます。
難しい言い方になりましたが、似たような要素を自動で取得します。
選択したい要素が設定できたら、[Done selecting]を押下し、確定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/b184b3c7-a9f3-6aa8-0fc6-3f0fb1284ef2.png)
複数の要素を選択している場合は、Multipleにチェックを入れてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/376cadf3-1a6e-0d2c-df8f-3641a2a0202c.png)
取得したい値がきちんと取れているかプレビューをしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/3084ec19-08e7-8e38-4abc-ff2509f26a7c.png)
プレビュー画面は以下のような表示になります。
取得したい値が取れているかを確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/f1e74fbf-56e5-1444-7dfd-e365d195942f.png)

選択が終わったら、[Save Selector]ボタンをクリックします。
これで設定が完了しました。
![スクリーンショット 2022-05-29 16.50.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/fa54f97a-99ef-9174-069f-cf27f3f3ce9b.png)

# 実行編
設定したスクレイピングを実行する方法について説明します。
以下の画像と赤いメニューの「Scrape」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/59fe2130-e5b3-c0cb-7e1d-3d66d41b99f9.png)
実行時の速度設定します。
取得先のサーバーに配慮した設定をお願いしてください。
値を設定したら、[Start Scraping]ボタンを押下してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/98744da6-f5f2-d506-06b4-f66586f76499.png)
Web Sctaperのメニューに戻って[Browse]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/9d46d4fc-f906-446f-b6d8-7ef27d58168d.png)
以下の画像の形でスクレピングが完了しています。
![スクリーンショット 2022-05-29 17.09.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/8727a1fd-1bf1-c262-cb85-de4b3c2ea8ed.png)
# 補足編
スクレイピングしたデータはCSVにしてインポートすることが可能です。
画像の[Export data]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/c2a4452e-1249-1ca2-b6b0-4cb294a4d3ee.png)
エクスポートの形は選べます。
このデータはtextのみですが、tableやlinkではより実用的なデータとなります。
![スクリーンショット 2022-05-29 17.15.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453260/7c124e47-b150-c5e3-f23e-cd7d54e7e812.png)

# 終わりに
久しぶりにまとめたので、説明不足なところがあったら教えてください。
私は業務でちょこっとスクレイピングしたいタイミングがあって、いい方法ないかなと
思ってこの方法に行きつきました。