Python入門トップページ


目次

  1. テストの自動化と Selenium
  2. Selenium のインストール
  3. ChromeDrive - WebDriver for Chrome のダウンロードと設置
  4. Web ページを開いてみよう
  5. リンクをクリックしてみる
  6. 要素の情報を取り出す
  7. すべての要素を取り出してみよう
  8. リンクを開いて戻ってみる
  9. リンクを巡回しながら情報を取得する(1)
  10. リンクを巡回しながら情報を取得する(2)
  11. リンクを巡回しながら情報を取得する(3)
  12. 要素の見つけ方

Selenium を使って Web からデータを自動収集しよう

リンクを巡回しながら情報を取得する(1)

最後に,各コースへのリンクを巡回しながら,コースごとに主な講義の名称を取得したい.まず,ここではステップ1として,各コースへのリンク情報を取得するコードを記述します.目的のページには様々なリンクが設置されているので,<a> タグを取得すると不要なリンクも多数取得してしまう.HTMLソースを確認すると,<div class="box"> の中にある <a> タグを取得できれば良さそうです.

selenium-2021-04

したがって,17行目で <div class="box"> タグをすべて取得し,18行目からのforループによって,<div class="box"> タグ内にある<h3><a>を取得して辞書に格納しています.

 リンク情報を取得して辞書に格納する (manager-selenium06.py)
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time       # 時間を操作するPythonの標準モジュール

# 操作するブラウザを開く
chrome_service=Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=chrome_service)
# driver = webdriver.Chrome('C:\\Users\\bk182005\\Documents\\selenium\\chromedriver.exe') # 手動インストールを使う場合

# 操作するページを開く
driver.get('https://kobegakuin-biz.jp/course/')

# 3秒待つ
time.sleep(3)

# 空の辞書を準備
courses = {}

# class="box" の要素をすべて検索する
elms = driver.find_elements(By.CLASS_NAME, 'box')
for elm in elms:
  course_title = elm.find_element(By.TAG_NAME, 'h3').text
  url = elm.find_element(By.TAG_NAME, 'a').get_attribute('href')
  # 辞書に追加
  courses[course_title] = url

# 辞書の内容を表示
print(courses)

# 3秒待つ
time.sleep(3)

# ブラウザを閉じる
driver.close()

上のコードを実行すると,キーに「コース名称」,値に「URL」がセットされた辞書が作成されたことを確認できます.

(base) C:\Users\bk182005\Documents\python>python manager-selenium06.py ⏎

DevTools listening on ws://127.0.0.1:60250/devtools/browser/0f451e0c-abdf-4075-8af8-1e1aa2762379
{'経営・商学コース': 'https://kobegakuin-biz.jp/course/business.html', '会計コース': 'https://kobegakuin-biz.jp/course/accounting.html', '経営情報科学コース': 'https://kobegakuin-biz.jp/course/solution.html', '専門語学・海外研修': 'https://kobegakuin-biz.jp/course/global.html', 'スポーツサイエンスユニット': 'http://www.ge.kobegakuin.ac.jp/~kyotsu/feature/sports/index.html'}

(base) C:\Users\bk182005\Documents\python>

次のページでは,この辞書を参照しながら複数のページを巡回します.

目次に戻る