Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第2回】seleniumを用いたHTMLデータから要素の取得

はじめに

Webスクレイピングとは、WebサイトからWebページのHTMLデータを取得し、HTMLのテキスト情報を解析することでマーケティングなどの必要な情報やデータを取得して、新たな価値を生むことができます。

Pythonを用いてWebスクレイピングをする際に必要となる代表的なライブラリに、requests、BeautifulSoup、Selniumがあります。Selenium は Web ブラウザの操作を自動化するためのフレームワークです。webスクレイピングでは、HTMLのデータを取得してHTML内の要素を抽出したり、テキストボックスに文字を打込んだり、ページを遷移させたりします。

本記事では、seleniumを用いたHTMLデータから要素を取得する方法を紹介します。

SAMURAI TERAKOYA

 

1. ライブラリのインストール

以下のpipコマンドを用いてseleniumをインストールします。

 

2. HTMLのサンプルコードの用意

本記事で例題を実施するのにわかりやすいHTMLデータを用意しました。以下の内容がHTMLデータ例です。こちらをコピーしてexample.htmlとして保存してください。

 

3. GoogleChromeの起動とページのアクセス

Chromeに起動をするためにseleniumのwebdriverを用います。webdriver_managerを用いることでブラウザのバージョンに対応したdriverを取得をしてくれるので、とても便利です。webdriver_managerについてはこちらの記事でも紹介しています。

以下の例では、webdriver_managerを用いてGoogleChromeを起動し、上記の第2章で示したHTMLのページに接続しています。今回はローカルのアドレスを指定していますが、httpなどのURLでも接続できます。

上記部分だけで実行すると以下のページがchromeで3秒間表示されると思います。

 

4. HTMLから要素の取得

それでは本記事の本題部分である要素の取得について説明いたします。要素の取得についてはこちらの記事で示されています。要素を取得するにはfind_elementを用います。

取得方法はいくつかあるので、以下の表にまとめます。

取得方法 コード例
id属性を指定して取得 find_element(By.ID, "id")
name属性を指定して取得 find_element(By.NAME, "name")
xpathを指定して取得 find_element(By.XPATH, "xpath")
link textを指定して取得 find_element(By.LINK_TEXT, "link text")
partical link textを指定して取得 find_element(By.PARTIAL_LINK_TEXT, "partial link text")
タグ名を指定して取得 find_element(By.TAG_NAME, "tag name")
class属性を指定して取得 find_element(By.CLASS_NAME, "class name")
cssセレクタを指定して取得 find_element(By.CSS_SELECTOR, "css selector")

 

さらに属性に対する属性値を取得するにはget_attribute()を用います。引数には属性を指定します。

それでは、HTMLのサンプルコードを用いて実際に要素を取得してみましょう。

上記を実行した結果は以下になります。

 

上記で示した手法を用いて、HTMLデータから必要な要素を取得することができます。Chromeではページを開いて右クリックで「検証」を選択するとそのページのHTML情報を閲覧できるので、ぜひご自身でもページを見ながら要素を取得してみてください。

以下の様に表示されます。

 

5. 応用例の紹介

本記事で紹介した手法を用いることで、以下の記事のようにseleniumを用いて検索ワードに対する各ページのタイトルとURLを取得して、そのURLからrequestsとBeautifulSoupを用いてHTMLの取得・解析ができるようになります。

chantastu.hatenablog.com

 

以下の記事では、吉野家の店舗情報の自動取得を題材に、SeleniumによるWebスクレイピングの方法を解説しています。

note.com

オススメ書籍

Pythonによるスクレイピング機械学習開発テクニック増補改訂 Scrapy、BeautifulSoup、scik

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、seleniumを用いたHTMLデータから要素を取得する方法を紹介しました。HTMLのサンプルコードを用意して、HTMLの要素を属性などを指定して取得しました。本記事の手法を用いることでページ内の必要な要素を取得することができるようになるので、ぜひ使いこなせるようになりましょう。