Webページからデータを収集して分析し、ビジネス課題の解決に繋げたい・・・
生業として、あるいは業務の一環として、そんなことを思ったビジネスパーソンは少なくないことでしょう。
そのような技術をスクレイピングと呼びます。
しかし、自分にできるのだろうか?
大丈夫です、スクレイピングはプログラミングの知識がなくても可能です。プログラミングの知識があればなお高度なことができます。
本記事ではWebスクレイピングの方法、特にPythonでの方法、またスクレイピング事例や法的な側面まで、スクレイピングについて紹介していきます。

北海道大学理学部数学科確率論専攻。 地方都市に居住していて、プロジェクトのテックリードを努めたりする傍ら、中小企業のDX支援なども積極的に行う。 後進に知識を伝えるべくライティング業務をしている。
スクレイピング入門~仕組み・種類~
スクレイピングは、ウェブサイトからデータを収集し、そのデータを分析や他の用途に活用するためのプロセスです。
収集したデータを加工するプロセスも含みます。
RubyやJavaScript、PHPなどの言語でもスクレイピングは可能ですが、豊富なライブラリがあり、初心者の方でも取り組みやすいPythonでのスクレイピングを本記事ではおすすめします。
ライブラリを使うことで、イチからコードを記述する必要がなく、効率的にスクレイピングプログラムを構築できます。また、Pythonはスクレイピング関連の書籍や、Web上の情報も充実しているので、初心者の方でも学習しやすい言語です。
Pythonでのスクレイピングは、Web上の情報を効果的に取得するための強力なツールとして広く使用されています。
スクレイピングとは?メカニズム
スクレイピングのメカニズムを図示すると次のようになります。
この図について説明します。
- 対象URL: スクレイピングの対象となるウェブページのURLを指定します。これはデータを収集する場所です。
- HTTPリクエスト: Pythonのリクエストライブラリを使用して、対象URLにHTTPリクエストを送信します。これにより、ウェブサーバーからウェブページのHTMLコードを取得します。
- HTML解析: 取得したHTMLコードを解析し、必要な情報を抽出するために、HTML解析ライブラリ(例:Beautiful Soup)を使用します。
- データの抽出: 解析したHTMLからデータを抽出し、必要な情報を選別します。これはXPathやCSSセレクタを使用して行います。
- データの保存: 抽出したデータを必要に応じてデータベースに保存するか、ファイルにエクスポートします。
スクレイピングとクローリングの違い
スクレイピングと似た言葉にクローリングがあります。
スクレイピングとクローリングの違いは以下です。
- スクレイピング:Webサイトからデータを収集した後、データを分析する。
- クローリング:(一般的には)多数のWebサイトを巡回し、データを取得する。
スクレイピングが取得したデータの活用に重きを置いているのに対して、クローリングは、たとえばWebサイトを巡回して新しく作られたサイトをチェックするなど、どちらかというとデータの一次利用に重きを置いています。
また、スクレイピングと表現した場合、データを分析して、不要なデータをふるいにかけたり、見やすい形式にデータを整えることを含むことが多くなっています。
同じような意味で使われることも多くなってはいますが、ひとまずは、上記のような違いがあることを頭に入れておきましょう。
Pythonを使ったスクレイピングの方法
この章では、Pythonを使ったスクレイピングの手順を解説します。
Pythonは初学者でも学習しやすいと言われていため、スクレイピング入門としてはうってつけでしょう。
Pythonを利用したウェブスクレイピングは非常に強力で、多くのライブラリとツールが提供されています。
現在、Pythonを用いたスクレイピングはビジネスや研究に幅広く活用されています。
必要なライブラリをインストールする
まずは必要なライブラリをインストールしましょう。以下の手順でできます。
Requestsのインストール
Beautiful Soupのインストール
4を付けることに注意しましょう!
Playwrightのインストール
playwright install
pipでインストールした後、playwright installを実行するのを忘れないでください!
ライブラリをインポートする
Pythonプログラムでは、各ソースファイルの先頭で、そのソースファイルで使うライブラリをimportしなければなりません。
Requestsのimport
Beautiful Soupのimport
Playwrightのimport
こちらは少々複雑です。
一般的には、
で事足りることがほとんどです。
ただ、「非同期」の場合はこの限りではありません。「非同期」は高度なトピックなのでこの記事では割愛します。
ウェブページを取得する
ウェブページを取得するには、Requestsを使って次のように書きます。
response = requests.get(url)
このとき、responseにウェブページのデータが入っています。
HTMLをパースする
取得したHTMLをBeautiful Soupでパースします。
必要なデータを抽出する
さて、ここがスクレイピングの肝ですね。
たとえば次のようにして抽出します。
# itemが対象の処理
このコードでは、HTMLの要素の中で、class属性が’sample’に「完全一致」する要素を抽出しています。
このステップでは、Beautiful Soupの構造の理解が必須になります。
データを保存する
抽出した結果はPythonのデータ型として格納されています。
必要に応じて、ファイル(テキストファイルやExcelファイルなど)に保存するなり、データベースに保存するなりしましょう。
ファイルに保存するサンプルコードは以下です。(dataに抽出した結果が格納されているとします)
with open(filename, ‘w’) as file:
file.write(data)
以上の手順をまとめると以下になります。
- ライブラリのインストール: スクレイピングに必要なライブラリをインストールします。代表的なライブラリにはRequests(HTTPリクエストの送信)、Beautiful Soup(HTML解析)、Selenium(ブラウザ制御)などがあります。
- 対象URLの指定: スクレイピングしたいウェブページのURLを指定します。
- HTTPリクエストの送信: Requestsライブラリを使用して、指定したURLにHTTP GETリクエストを送信します。これにより、ウェブページのHTMLコードを取得します。
- HTML解析: 取得したHTMLコードをBeautiful Soupを用いて解析します。これにより、ウェブページの構造を理解し、データを抽出できるようになります。
- データの抽出: 解析したHTMLから必要な情報を抽出します。XPathやCSSセレクタを使用して、特定の要素やテキストを取得します。
- データの保存: 抽出したデータを必要に応じてファイルに保存したり、データベースに格納したりします。
Webスクレイピングの基本的なステップを理解して、スクレイピングを始めてみましょう。
禁止されてる?スクレイピングの法的枠組み
実は、スクレイピングは強力な技術であるだけに、ちょっとした規制がかかっています。
以下では、その法的な規制や、スクレイピングを行う上でのマナーについて紹介します。
スクレイピングの合法性と違法性の境界
Webスクレイピングは、情報を収集しデータを抽出する非常に強力なツールであるが故に、合法性については配慮する必要があります。スクレイピングが合法か違法かを判断するために、以下のポイントを理解しておきましょう。
- ウェブサイトの利用規約を確認する
ほとんどのウェブサイトは、スクレイピングに関する利用規約を持っており、スクレイピングが禁止されている場合があります。規約や指示に従わないと、法的な問題が生じる可能性が高まります。 - プライバシーと個人情報の尊重
スクレイピングを行う際、個人情報やプライバシーに配慮することが必要です。個人情報を不当に収集・利用することは、法的な問題につながる可能性があります。公にアクセス可能な情報のみを収集し、個人情報を含むデータは適切に処理しましょう。 - 商標と著作権の尊重
スクレイピングで収集したデータを再利用する際、商標や著作権に注意を払いましょう。他者の商標や著作権を侵害することは違法です。収集したデータの使用に関してライセンスや使用許諾が必要な場合は、適切な許可を取得しましょう。 - サーバーに過度な負荷をかけない
スクレイピングは、Webページの閲覧をコンピュータが高速に行うものなので、何も考えずにプログラムを組むとサーバーに過度な負荷がかかるプログラムになることがあります。あまりに過度な負荷をかけるとDOS攻撃(大量のアクセスを行ってサーバーをダウンさせる攻撃)と見做されて、最悪の場合訴えられる可能性もあります。過度な負荷はかけないようにしましょう。一般的には、アクセスとアクセスの間に数秒わざと時間を置く処理をプログラム内に挿入します。
スクレイピングに関する法的な相談が必要な場合、弁護士や法律専門家に助言を仰ぐことをお勧めします。
スクレイピング対策と法的リスク
上述の通り、スクレイピングを禁止する対策を取っているサイトもあります。
そのようなサイトをスクレイピングして、露見した場合どうなるのでしょうか?
会員制のサイトだった場合、会員資格の停止などが考えられます。
また、違反行為として度が過ぎていた場合、刑事事件として立件される可能性もあります。過去には日本でも立件された例があります。
DOS攻撃にならないように留意するのはもちろん、サイトの規約を遵守し、法的なリスクを冒さないようにスクレイピングしましょう。
スクレイピング禁止サイトの確認方法
それでは、スクレイピングが禁止されているサイトをどのように確認すればいいのでしょうか?
確認方法は主に3種類あります。
サイトの利用規約で確認
上記でも触れましたが、サイトの利用規約にスクレイピングを禁止する旨が明記されている場合、そのサイトからのスクレイピングは行わないようにします。
違反した場合の罰則なども定められていますので、利用規約をよく確認しましょう。
IDを持っていないと閲覧できないサイトの場合、スクレイピングを禁止していることがたまにあります。
robot.txtで確認
各サイトにはrobot.txtというファイルが付いています。
確認方法は、「サイトのURL + “/robot.txt”」です。
こちらが「Disallow」の場合、スクレイピングはできません。「Allow」の場合のみスクレイピングを許可しています。
もともと、robot.txtは検索エンジンの巡回を許可するかしないかの判別のために設けられた仕組みです。
転じて、スクレイピングの可否に使われているのです。
Web APIがあるか
そのサイトがデータ取得用のWeb APIを用意している場合、基本的にはAPIを使用してデータを取得し、スクレイピングは行わないようにしましょう。
例えばXなどはデータ取得用のAPIを公開しています。ですのでXへのスクレイピングは通常行いません。
APIはサーバーへの負荷などを考慮して設計されていることが多いので、順守するようにしましょう。
スクレイピングのマナーとリスク管理
さて、スクレイピングは法的な側面をクリアしたからと言ってなんでも行っていいというものではありません。
倫理的な配慮が必要とされます。
以下の点に留意が必要です。
- サーバー負荷: 過度なリクエストを送信することによって、対象サーバーに過度の負荷をかけることがあります。これは、サーバーへの負担を最小限に抑えるために適切なアクセス頻度を設定することが重要です。
- データの誤解釈: スクレイピングで収集したデータを解釈する際に、誤った結論を導く可能性があります。データを収集し解析する際には、正確性を確保するために慎重に検討しましょう。
- 透明性: スクレイピングを行うことが対象ウェブサイトの他のユーザーや運営者に分かるようにしましょう。ウェブサイトのrobots.txtファイルを尊重することも大切です。
- 個人情報の保護: ユーザーの個人情報を収集しないように心掛けましょう。また、収集したデータを安全に保管し、漏洩のリスクから保護しましょう。
特に個人情報の保護は重要です。
個人情報漏洩は単なるマナー違反ではなく、法的な問題にもなり得るデリケートな問題です。
Webスクレイピングの活用事例
以下では、実際のビジネスおよびプロジェクトにおけるスクレイピングの活用事例について詳しく説明します。
ただし、スクレイピングしていることを表には出していない企業も多く、ここでは具体的なプロジェクト名は挙げられません。ただそういう事例があるということだけご紹介します。
市場調査と競合分析
スクレイピングは、市場調査および競合分析において非常に有用です。特にto Cの会社に多い事例ですが、競合他社のウェブサイトから価格情報、商品詳細、レビューなどを収集することがあります。
そのデータを多角的に分析して、マーケットの状況や競合状況を把握します。
そして企業の戦略決定の判断材料の一つとするのです。
この事例は表には出てきません。なかなか表に出せないタスクと見做されています。
リアルタイム情報収集
データスクレイピングを活用すると、リアルタイムの情報収集が可能になります。
天候情報、株価、ニュースヘッドラインなど、リアルタイムで情報更新がある分野で最新情報を取得できます。
AIの入力データとしてAIの判断材料にしたりします。
例えば、株のトレーダーを補助するAIは株価を常にスクレイピングし、補助的な解析と分析を行ってからトレーダーに提示しています。そのAIの判断を補助に使ってトレーダーが意思決定することが現代では普通です。
以上のように、データスクレイピングはビジネスにおいて多くの応用が可能であり、効率的なデータ収集と分析を実現します。ただし、データの利用にあたっては、前述のとおり法的規制と倫理を遵守することが重要です。常に適切なデータ利用のガイドラインに従いましょう。
Webスクレイピングの応用技術・活用事例
GASを活用したスクレイピング手法
Google Apps Script(GAS)を活用したスクレイピング手法は、ウェブデータを収集するための便利なツールとして広く使用されています。GASを使用することで、ウェブページからデータを取得し、Google スプレッドシートやその他の Google サービスと統合してデータを処理できます。
以下では、GASを活用したスクレイピングの手法とそのメリットについて詳しく説明します。
GASはJavaScriptをベースにしたスクリプト言語で、Google ドキュメント、スプレッドシート、カレンダーなど、さまざまなGoogleサービスと連携できます。ウェブスクレイピングにGASを使用する際の一般的な手順は次の通りです。
- GASプロジェクトの作成: Google ドライブで新しいスクリプトファイルを作成し、GASプロジェクトを開始します。
- ウェブページのURLを指定: GASスクリプトでスクレイピング対象のウェブページのURLを指定します。このURLからデータを収集します。
- HTTPリクエストを送信: GASを使用してHTTPリクエストを送信し、ウェブページのコンテンツを取得します。これにはUrlFetchAppなどのGASのビルトインサービスが使用されます。
- データの解析: 取得したウェブページのコンテンツを解析し、必要なデータを抽出します。これにはHTMLパースライブラリや正規表現を使用することが一般的です。
- データの保存と処理: 取得したデータをGoogle スプレッドシートなどのデータベースに保存し、必要に応じて処理や分析を行います。
データアナリストにおけるスクレイピングの活用
ここでは筆者の経験から書きます。
筆者は以前、ある中小企業の資産運用のアナリストをしていました。
その中小企業が資産運用の参考としているサイトを夜間にスクレイピングし(もちろんサーバーを立てて自動で行っていました)、そのデータを日々集め、定期的に分析して企業にレポートしていました。
スクレイピングのコードを書いたのも、スクレイピングするサーバーを運用していたのも筆者です。さらに分析まで行っていました。
スクレイピングの仕事にはこのようなデータアナライズの仕事もあるのです。
初心者でも簡単に使えるスクレイピングツール5選
さて、プログラムを組んでスクレイピングする方法は解説しましたが、もっと手軽に行う方法はないのでしょうか?
プログラムを組まずに、ツールだけでスクレイピング出来たら初心者でもスクレイピングできますよね。
実は、そんなスクレイピングツールは多数出ています。
ここでは、その中から代表的なツールを5つ紹介します。
Octoparse
Octoparseは、通常のWebサイトに加え、Ajax、JavaScript、cookieなどを利用している複雑なWebサイトも処理できるスクレイピングツールです。
ログインが必要なWebサイトにも対応可能です。
以下の方に向いています。
- 企業で業務としてスクレイピングを行う方
- 大規模なスクレイピングを行う方
- (スクレイピングのさせ方がちょっとしたプログラミングに近いので)複雑なプロセスを組むことに抵抗がない方
ParseHub
ParseHubも複雑なWebサイトに対応したスクレイピングツールです。
ParseHubの最大の特徴はAIを利用していることです。自分で逐次抽出データの処理を指示しなくても、AIが処理してくれる範囲が広くなっています。
以下の方に向いています。
- なるべく自動でスクレイピングさせたい方
- ある程度ツールに料金をかけられる方
- 英語表記に抵抗がない方
Web Scraper
Web Scraperは、Chromeの拡張機能として提供されているスクレピングツールです。
拡張機能なのでインストールは簡単です。
半面、データの保存方法にやや癖があり、そこをクリアできるなら活用を考えてみてもいいでしょう。
以下の方に向いています。
- 手軽にスクレイピングを始めたい方
- Chromeの方
- csv形式のデータの取り扱いに慣れている方
Outwit Hub
Outwit Hubは、Firefoxの拡張機能として提供されているスクレイピングツールです。
Web Scraperと同様、拡張機能なのでインストールは簡単です。
ただし、複雑なWebサイトは苦手としており、簡単な構造のWebサイトのスクレイピングに利用するとよいでしょう。
以下の方に向いています。
- 手軽にスクレイピングを始めたい方
- Firefoxの方
- 簡単なWebサイトをスクレイピングの対象とする方
webz.io
webz.ioは、Webサービスの形で提供されているスクレイピングツールです。
ホームページは英語ですが、スクレイピング自体は多言語に対応しています。
Big Dataと銘打っているだけあって、大規模スクレイピングに向いています。
以下の方に向いています。
- 企業で業務としてスクレイピングを行う方
- ある程度ツールに費用をかけられる方
- 英語表記に抵抗がない方
まとめ:スクレイピングの効果と重要性
スクレイピングは現代の中小企業にとって不可欠なツールです。ウェブ上の情報を収集し、競合分析、市場調査、価格比較、顧客の意見分析など、さまざまな用途で活用できます。スクレイピングを駆使することで、企業はより迅速かつ正確な意思決定を行い、競争力を高めることが可能です。
しかし、スクレイピングを行う際には法的規制とエチカルな実践が非常に重要です。違法なスクレイピング行為は企業に大きなリスクをもたらす可能性があり、信頼性と評判を損なうことがあります。スクレイピングを活用する企業は、適切な法的アドバイスを受け、エチカルなガイドラインを策定することが必要です。
最終的に、スクレイピングは中小企業にとって競争力を維持し、成長を促進するための貴重なツールと言えます。情報収集の効率化、市場動向の把握、競合他社との差別化など、多くの利点を提供します。中小企業がスクレイピングを戦略的に活用することで、変化の激しいビジネス環境で成功する道が拓けるでしょう。
スクレイピングを通して実現されたいことがありましたら株式会社Jiteraに遠慮なくご相談ください。お力になれれば幸いです。