オーダーメイドコース
icon
icon

SeleniumとBeautifulsoupを利用してPythonでスクレイピングする方法を現役エンジニアが解説【初心者向け】

初心者向けにSeleniumとBeautifulsoupを利用してPythonでスクレイピングする方法について現役エンジニアが解説しています。SeleniumとはWebブラウザの操作を自動化させるためのライブラリで、Beautifulsoup4とはスクレイピングライブラリです。データを収集することができます。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

nakamoto

アジマッチ有限会社代表取締役社長。書籍化歓迎。対応業務:PHP(Laravel)、機械学習、Vue.js、LAMP・AWS、越境EC、CTO、エンジニア採用、CTO、経営者の不安解決コンサルティング。

SeleniumとBeautifulsoupを利用してPythonでスクレイピングする方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

SeleniumとBeautifulsoupを利用することで、Webページの内容のいち部分を指定して保存できます。

実務でも、自社サービスの表示データの一部をスクレイピングするので、ぜひ学習してみてください。

目次

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

SeleniumとBeautifulsoupを利用してPythonでスクレイピングする方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

Seleniumとは

Seleniumとは、Webブラウザの操作を自動化させるためのライブラリです。

2004年にThoughtWorks社のJason Hugginsによって、ThoughtWorksの内部ツールとして開発されました。

ブラウザ操作の自動化を行うためのスクリプトであるSeleneseでテストを実行することから始まりました。

その後、Seleneseを使う代わりに汎用的なプログラム言語でもテストを行えるクライアントAPIも提供されています。

現在提供されているのは、次の言語用クライアントAPIです。

  • Java
  • C#
  • Ruby
  • JavaScript
  • R
  • Python
  • Kotlin

 

Beautifulsoup4とは

近年は機械学習などのデータを作成する時に、Webサイトからのデータを収集するための作業をプログラムを使って、半自動化することで大量のデータの取得を効率化させることが多くなりました。

そこで使われる手法がスクレイピングです。

Pythonではいくつかのスクレイピングライブラリがありますが、その1つがBeautifulsoup4です

Beautifulsoup4とは、HTMLやXMLの中から必要なデータを抽出するためのPythonライブラリです。

HTMLの中身を解析してツリー構造にして目的のコンテンツを取得できることです。

つまり、Seleniumからブラウザを操作して出力された目的のページのHTMLをBeautifulsoup4で取得して、中身の構造を解析してプログラムから目的のデータを抽出するという流れがPythonでスクレイピングをやる時によく使われる手法です。

ちなみあらかじめ目的のページのURLがわかっている場合は、Seleniumの代わりにurllibを使ってHTMLを取得する方法もあります。

 

[PR] 未経験からWebエンジニアを目指す方法とは

Selenium IDEインストール方法

1.SeleniumIDEのダウンロード

ChromeウェブストアのSelenium ページにアクセスしてChromeに追加をクリックします。

もし、Chromeウェブストアページが見つからなかったら、「chromeウェブストア Selenium 」で検索してみてください。

2.SeleniumIDEのインストール

Selenium 拡張機能を追加すると、Selenium IDEのインストールが完了します。

今回はMicrosoft Edgeを利用していますが、Microsoft EdgeはChromeと互換性のある、Chromiumエンジンを利用しているため、Chrome拡張機能の利用が可能です。

 

Selenium WebDriverのインストール方法

Selenium WebDriverをPythonで利用するためには、Python環境を用意する必要があります。

効率的に開発!AnacondaでPythonの環境構築する方法 の記事を参考に、AnacondaでPythonの環境構築をしてみてください。

 

1.Anaconda Promptの実行

スタートメニューからAnaconda Promptを選択して、管理者として実行してください。

2.コマンドプロンプトからSeleniumをインストール

コマンドプロンプトが起動するので、conda install -c conda-forge seleniumというコマンドをコピーアンドペーストで実行してみてください。

conda install -c conda-forge selenium

3.seleniumインストール処理

インストール処理が開始されるので、yを入力してください。

4.Seleniumインストールが完了

また、まずはここから!Pythonのインストール方法【初心者向け】も参考にしてみてください。

 

Beautifulsoup4のインストール

Beautifulsoup4はAnacondaのcondaコマンドでインストールしてみましょう。

conda install -c anaconda beautifulsoup4

 

colab.research.google.comのドライバーインストール

もし、https://colab.research.google.com/で利用する場合は、次のドライバーを準備する必要があります。

AnacondaやPythonファイルを実行する場合はこの操作は不要です。

!pip3 install selenium
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

 

実際にスクレイピングしてみよう

それでは実際にスクレイピングをやってみます。

今回はcolabを利用して、技術情報サイトのテックアカデミーマガジンから、Pythonに関連した記事を取得する流れを自動化してみます。

サンプルプログラム

import time
from selenium import webdriver
from bs4 import BeautifulSoup
# 処理開始
url = "該当URL"
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',options=options)
# ページにアクセス
driver.get(url)
search[0].send_keys('Python')
search[0].submit()
time.sleep(5)
# 検索先のページのHTMLを取得
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, 'lxml')
results = soup.find_all("h3", class_="entry-title")
# 結果を出力
for result in results:
    href = result.findAll("a")[0].get("href")
    print(url + href)
driver.close()
driver.quit()

実行結果

実行すると、以下のように検索結果に出力された記事のリンクを表示させます。

解説

今回のコードはそのまま動作させると、違法スクレイピングにつながる可能性があるため、そのままでは動作しないように一部のコードを意図的に削除しています。

url = “該当URL”で指定したURLをスクレイピングしています。

search[0].send_keys(‘Python’)で指定した、Pythonというキーワードを指定して検索しています。

print(url + href)で取得したURLを表示しています。

 

まとめ

今回はSeleniumとBeautifulsoupを組み合わせて、スクレイピングを行う方法を紹介しました。

ブラウザから目的の操作を行いデータを取得する際にとても便利な方法ですので、データ収集が効率よくなると思います。

ただし、スクレイピングで著作権が関わるコンテンツを取得したり、悪質なクローリングを行うと、違法行為として裁判沙汰になることがあります。

なお、テックアカデミーマガジンではスクレイピングを許可しておりません。

また、Twitterなどはガイドラインでスクレイピングを全面的に禁止しているので、マナーを守って正しくスクレイピングを行いましょう。

 

大石ゆかり

内容が分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

Pythonを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!