「Webスクレイピングツールを自分でゼロから構築したい」こうしたニーズが近年急増しています。Webスクレイピングツールは、インターネットの情報を収集・保存・分析に役立ちます。そのWebスクレイピングツールで、重要な役目を持つのが「Webクローラー」です。
本記事ではプログラミング初心者の方でも、かんたんに作れるWebクローラーの構築方法について解説します。実際に構築をしなくても、Webクローラーの仕組みを理解することは、ITリテラシーを高める上でとても大切です。ぜひ参考にしてみてください。
Webクローラーとは?
Webクローラーとは、インターネットからWebサイトのコンテンツをダウンロードし、それらをインデックス付けすることによって動作するインターネットボットです。Webクローラーの目的は、Webサイト全体に存在するWebページの内容を把握し、必要なときに必要な情報だけを取得することです。
例えるならば、書籍が整理されていない図書館で、すべての本を調べてカードカタログにまとめるような役割を持ちます。カードカタログがあれば、図書館に訪れた人は目的の書籍を容易に見つけられるようになります。
実際のWebクローラーの多くが、検索エンジンによって運営されています。検索エンジンは、Webクローラーによって収集されたデータに独自の検索アルゴリズムを適用することで、ユーザーの検索クエリ(キーワード)に応じた関連リンクや検索結果一覧を生成します。
なぜWebクローラーが必要なのか?
もし、世の中にGoogleやYahoo!といった検索エンジンが存在しなかったらどうなるか想像してみてください。膨大なWebコンテンツの中から、欲しい情報が書かれているWebページに果たしてたどり着けるでしょうか?今や検索エンジンがなければ、インターネット上で欲しい情報を見つけることはほぼ不可能でしょう。
Google検索回数は年間2兆回以上にのぼるという推計もあります。すでに私たちの生活には「検索エンジン」は欠かせないものとなっています。
検索エンジンは、インターネット上に存在する無数のWebページをリンクを辿りながら情報を収集し、収集した情報をデータベースに分類・登録する役割を持ちます。
このときに、情報収集の役割を担うのが「Webクローラー」です。つまり、Webクローラーは検索エンジンの基盤といえます。
Webクローラーで何が実現できるのか?
Webクローラーを構築することで、具体的にどのようなことが実現できるのでしょうか。主な用途を3つ解説します。
1.コンテンツ集約(コンテンツアグリゲーション)
コンテンツアグリゲーションは、Webメディアやブログメディアなど、さまざまなメディアのコンテンツを1つのプラットフォームに集約します。そのため、人気のあるWebサイトをスクレイピングして、プラットフォームの内容を充実させる必要があります。
参考:誰でも掴めるビジネスチャンスは?コンテンツ集約が答える
2.感情分析(センチメント分析)
感情分析とは、製品とサービスに対するユーザーの態度や感情を分析することです。感情分析を行うためには、対象製品のレビューやコメントを収集し、データとして抽出する必要があります。
参考:YouTubeコメントをスクレイピングで自動取得して羽生結弦選手のファン感情を分析する
3.見込み客獲得
これまで見込み客を獲得するには、積極的に展示会やセミナーなどに参加したり、訪問営業などで名刺交換を行う必要がありました。入手した名刺に書かれた顧客情報はExcelなどに整理し、その後は一社一社アプローチを繰り返し、商談化へとつなげていきます。
しかし、こうしたアナログなやり方をしなくとも、Webクローラーであれば、人気のWebサイト(リクナビ・食べログ)や、iタウンページなどから企業情報を自動で収集できます。
Webクローラーをゼロから構築する方法とは?
Webクローラーをゼロから構築する方法は大きく2つあります。どちらの手法を用いるかは、ご自身のプログラミングスキルや、Webスクレイピングの目的・用途にもよります。ただし、どちらも知っておけば、状況に合わせて使い分けができるようになりますので、ぜひご覧ください。
1.プログラミング言語を使う(Python)
一般的な方法としては、プログラミングを使ってWebクローラーを自作する方法です。PHP、Java、C / C ++などを使えばWebクローラーをゼロから作成できます。しかし、非プログラマーからすればイチからプログラミングを学ぶことは容易ではありません。
数あるプログラミング言語の中で、比較的簡単なプログラミング言語として人気なのが、「Python」です。Pythonの文法は、かんたんな英語がわかる方であれば、理解しやすいのが特徴です。
以下はPythonで記述したWebクローラーの簡単な構文例です。
import Queue
initial_page = “http://www.renminribao.com”
url_queue = Queue.Queue()
seen = set()
seen.insert(initial_page)
url_queue.put(initial_page)
while(True):
if url_queue.size()>0:
current_url = url_queue.get()
store(current_url)
for next_url in extract_urls(current_url):
if next_url not in seen:
seen.put(next_url)
url_queue.put(next_url)
else:
break
PythonによるWebスクレイピングの主な手順は以下の3つです。
- WebページのURLにHTTPリクエストを送信します。Webページのコンテンツを返すことにより、リクエストに応答します。
- Webページを解析します。パーサーは、HTMLのツリー構造を作成します。ツリー構造は、ボットが作成したパスをたどり、情報を取得するためにナビゲートするのに役立ちます。
- Pythonライブラリを使って解析ツリーを検索します。
Pythonは比較的扱いやすい言語といわれていますが、プログラミング経験がない初心者が自力でゼロからWebクローラーを構築できるようになるには、少なくとも数ヶ月間のプログラミング学習が必要です。初心者のPython学習は「Progate」「ドットインストール」などがおすすめです。
2.Webスクレイピングツールを活用する
プログラミング学習に掛ける時間がない場合や、プログラミングを使わずに手っ取り早くWebクローラーを構築したい方であれば、Webスクレイピングツールの活用が最適です。
たとえば、Webスクレイピングツールの「Octoparse(オクトパス)」はコード記述を一切行わないノーコードツールです。独自のエディタ画面から、ドラッグ&ドロップでの直感的な操作だけで、任意のWebサイトから欲しい情報を自動取得を実現します。
さらにOctoparseには数十種類のテンプレートが備わっているため、そのテンプレートを選択するだけで、立ち上げから数分でWebスクレイピングを実行します。
テンプレートは、食べログ、リクナビ、Amazon、Indeed、Google Maps、X(旧Twitter)、YouTubeなど国内でも人気のあるサイトをカバーしています。
Octoparseを使ってX(旧Twitter)から特定のツイートをスクレイピングをする手順
ここでは、Twitter(The X)から特定のツイートだけをスクレイピングする手順を紹介します。
ステップ1
Octoparseをパソコンにダウンロードします。ダウンロードが完了したら、Octoparseを起動し管理画面にアクセスしましょう。
ステップ2
テンプレート選択画面>カテゴリー「SNS」>Twitter(The X)を選択しクリックします。Twitter(The X)テンプレートは7種類あるので(2023年1月時点)、目的・用途に合ったものを選びましょう。ここでは、「Tweets by account_Twitter」を選択します。
※各テンプレートの違いは以下を参照
[FR]Author listing_Twitter | Twitterの作成者に関する情報(コンテンツ、コメントなど)を抽出するために使用されます。 |
Tweets Details by account URL_Twitter | Twitterのアカウントページから、各ツイートの投稿ID、投稿内容、投稿日時など詳細情報を抽出します。 |
Tweets by account_Twitter | Twitterのアカウントページから、各ツイートの投稿内容、投稿日時などの情報を抽出します。 |
Tweets and comments by search result URL_Twitter | キーワードから最新のツイート、Topツイートなどのデータを抽出します。 |
Tweets by hashtags_Twitter | Topツイートから「いいね数」「リツイート数」「返信数」などのデータを抽出します。 |
Tweet details by keyword_Twitter | 任意の期間において特定のキーワードでツイートされた情報を抽出します。 |
ステップ3
テンプレートを起動したら、パラメーター入力欄に次の情報を入力します。
- スクレイピングしたいTwitter(The X)アカウント名 (最大10 個まで/ 1 行に 1 つ入力)
- ページ サイズ (スクレイピングしたいページの数)
どちらも入力したら、「保存して実行」をクリックします。
例えば、「日本経済新聞 電子版(日経電子版)」のアカウントの場合は、アカウント名「nikkei」を入力します。
ステップ4
抽出方法をローカル抽出またはクラウド抽出のいずれかから選択します。抽出するデータ量が少なければローカル抽出でも対応可能です。一方、クラウド抽出の場合は抽出スピードが20倍となりますが、有料プランの契約が必要となるため注意しましょう。
ステップ5
タスクを実行開始すると、データ抽出が開始されます。すべてのデータが抽出されるまで、数分程度掛かるため少し待ちましょう。抽出がすべて完了すると管理画面上に抽出されたデータが表示されます。
例えば、日経電子版のツイートデータが次のように抽出されました。
画面右下の「エクスポート」をクリックすると、抽出データを外部ファイル(Excel、CSV、HTML、JSON形式など)にエクスポートできます。
詳しい手順はこちらの記事をご覧ください。
参考:【初心者向け】無料でTwitter(The X)からデータを抽出する方法を解説!
Octoparseを使用する際の注意点
Webサイトの構造が複雑である場合、テンプレートモードでは思うようなWebスクレイピングを実行できない場合があります。
複雑な構造を持つWebサイト(ログインや検索が必要なサイトなど)の場合は、「カスタマイズモード」を活用しましょう。カスタマイズモードは自由度が高く強力なWebスクレイピングモードです。より柔軟なワークフローを設定できる上、JavaScript、AJAXなど動的なサイトにも対応します。
まとめ
この記事では、Webクローラーの基本から、ゼロからWebクローラーを構築する方法を2つ紹介しました。Webスクレイピングは、膨大なWebサイトの中から欲しい情報を欲しい時に収集する際に役立つ手法です。
データ活用が求められるデータドリブン社会において、「このデータ欲しいな」と思った時に、すぐにデータを収集できるかどうかは、あなたのビジネスに大きな影響を与えるでしょう。
「プログラミングを今から覚えるのは少し難しそうだな・・・」と思われた方や、「まずはWebスクレイピングを体験してみたい」と感じた方は、ノーコードWebスクレイピングツールのOctoparse(オクトパス)を活用してみてください。
Octoparseは無料から利用でき、クラウドベースなのでアカウント発行だけですぐに実行できます。Octoparseでは、チュートリアルやサポートが充実しているので、操作に困ったときでも安心して利用できます。ぜひWebスクレイピングスキル習得にお役立てば幸いです。