モダンなクローラーサービスはどんな機能を搭載しているのか動かして調べてみる ~for making better crawler~

この記事は [ただの集団 Advent Calendar 2020](https://adventar.org/calendars/5581) の1日目の記事です。

# はじめに
- 膨大なWebの世界から必要なデータを抽出するクローラーの需要は高まってきているが、いざ開発を始めようとすると開発に関する情報は意外なほど少ない。専門書やWeb記事も少なく学会や勉強会の開催情報もあまり見当たらない。GoogleもSEOの技術情報は多く発信しているがクローリングに関しては控えめだ。
- おそらくWebクローリング自体に明文化されたルールが少なくグレーな部分が多く情報がシェアされ辛いのが要因の一つだと思う。例えばクローリング対象サイトにどのくらい間隔を開けてアクセスするかなどは明文化されたルールがなく自主性に任せられていて度が過ぎるとアタックとみなされてしまう難しい世界だ。
- そこで最新のクローラーの動向を追うにはどうすれば良いかと考えたところ、世の中にあるクローラーのツールやサービスなどが参考になりそうなのだったので実際に触って機能を見てみる。

# クローラーサービス

## [Octoparse](https://www.octoparse.jp/)
![スクリーンショット 2020-11-30 1.01.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264912/047c9ae2-b637-d07a-f269-e0e319e630b1.png)

- 料金： 無料 ~ $167/月 or Enterprise
- ツールやサイトが日本語だったので国産かと思ったがアメリカ製。
- SPAサイトも対応。
- クローリングしたいサイトのURLを入力するだけで構造化データを解析して抽出できる。そこからワークフローを作ることでカスタマイズしたクローリングが可能。
- 自分で1からワークフローを作らなくてもAmazonやTwitterなど有名なサイトはテンプレートが用意されていて用途に応じてサクッとクローリングができる。
- 取得したデータはCSV・TSVを初めとして様々なフォーマットで取得可能。
- 有料版にすることでできること
    - タスク数や並列度の増加
    - 定期実行
    - IPローテーション
    - APIを通しての操作

## [ParseHub](https://www.parsehub.com/)
![スクリーンショット 2020-11-30 20.22.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264912/7a26c97a-8f60-aaf2-55ce-7b88039d0731.png)

- 料金： 無料 ~ $499/月 or Enterprise
- カナダ製。
- SPAサイトも対応。
- URLを入力した後で抽出したい箇所をいくつかクリックすると機械学習で勝手にクローリングを開始してデータを抽出する。
- 有料版にすることでできること
    - クローリングページやプロジェクトの上限増加
    - データ保持期間延長
    - 取得した画像のDropBoxやS3へのアップロード
    - IPローテーション
    - 定期実行

## [Dexi.io](https://www.dexi.io/)
![スクリーンショット 2020-11-30 21.10.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264912/6b9baffe-5e32-ae5b-d53f-868e51890471.png)

- 無料 ~ $625/月 or Enterprise
- イギリス製。
- SPAサイトも対応。
- Extractor、Crawler、Pipesなどのパーツを繋げて自由にクローラーをカスタマイズして作れる。カスタマイズ性が非常に高そうだが、1から自分で組み立てるので最初に動かせるようになるまで結構大変。
- 有料版にすることでできること
    - 多くのアプリとインテグレーションできる。
    - ライブサポートが付く。

# 今回触れなかったサービス・ツール
- 良さそうだが無料版なし、カード入力必須、フリーメールでアカウント作成ができない、アカウント作成にコンタクトが必要、などで動かすまでが大変そうで断念したサービス。
    - [Scrapinghub](https://www.scrapinghub.com/)
    - [Webhose.io](https://webhose.io/)
    - [Import.io](https://www.import.io/)
    - [80legs](https://80legs.com/)
    - [Mozenda](https://www.mozenda.com/)
    - [Diffbot](https://www.diffbot.com/)
    - [ScrapeHero](https://www.scrapehero.com/)
    - [Web Robots](https://webrobots.io/)
- クライアントツールのみ提供で自分のローカル環境のIPからアクセスしないといけないツール。そもそもクローラーツールはWebアクセスを許可しないといけないためアンチウイルスソフトと相性が悪く、信頼できないソフトはあまりインストールしたくない。
    - [Cyotek WebCopy](https://www.cyotek.com/cyotek-webcopy)
    - [HTTrack](https://www.httrack.com/)
    - [Getleft](https://download.cnet.com/Getleft/3000-2377_4-10809480.html)
    - [OutWit Hub](https://www.outwit.com/)
    - [Content Grabber](https://contentgrabber.com/Manual/getting_started.htm)
    - [Helium Scraper](https://www.heliumscraper.com/eng/)
    - [Data Scraping Studio](https://www.predictiveanalyticstoday.com/data-scraping-studio/)
    - [Easy Web Extract](http://webextract.net/)
    - [FMiner](http://www.fminer.com/)
    - [Web Content Extractor](http://www.newprosoft.com/)
    - [Web Sundrew](https://websundew.io/)

# まとめ
- 調べてみると思った以上にサービスやツール量が多く需要の高さが窺えた。おそらく探せばまだまだ数はありそう。ただしほぼ海外製。
- 一方でアカウント登録はほぼ必須であり、エンタープライズ向けのサービスが多く、気軽に使えるものは少ない。
- 気軽に無料で試すのであればOctoparseとParseHubはURLを入力するだけですぐ使えて操作が直感的でかつ高機能。
- SPAサイト対応は今や標準。
- 機械学習やAIの活用ももはや標準。
- 一般的な用途であればスクラッチで作らなくても何かのサービスを使ったり連携したりで事足りそう。
- 今後も動向はウォッチしていきたい。

# 参考文献
- [Webクローラーツール20選｜Webデータの収集を自動化できる](https://www.octoparse.jp/blog/top-20-web-crawling-tools-for-extracting-web-data/)
- [スクレイピングツール30選｜初心者でもWebデータを抽出できる](https://www.octoparse.jp/blog/top-30-free-web-scraping-software/)