こんにちは、Mottyです。
久々のpython記事…SeleniumでサクッとWeb情報を取得する方法を記載します。
Seleniumの概要
SeleniumとはWebアプリケーションのブラウザ操作を自動化するためのテストフレームワークです。2004年にUIテストを自動化することを目的に開発されました。さまざまな言語に対応してます。(JavascriptやPowershellなどでも使えます。)
またSelenium IDEという総合開発環境も用意されています。こちらを利用すれば、機能テストの記録、編集、デバッグができたりします。
早速書いてみる
取得や操作には要素指定するので、DOMに関する知識が必要です。
大阪で開催されている個人参加型フットサルイベントの一覧を取得してみましょう。
from xml.etree.ElementPath import xpath_tokenizer_re
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
browser = webdriver.Chrome()
url = 'https://labola.jp/reserve/events/search/personal/area-27/'
#ページングの表示機能がGETパラメーターに応じているため、5番目まで取得&繰り返し
for i in range(1,5):
browser.get(url + "?page=" + str(i))
#親要素を取得
elements = browser.find_elements(By.XPATH,'//*[@id="event_list"]/li/a')
print("★☆出力開始☆★")
for element in elements:
print("■□個サル会場□■")
#会場と日時を取得
date = element.find_elements(By.CLASS_NAME,'date')[0]
print(date.text)
#募集状況を取得
status = element.find_elements(By.CLASS_NAME,'apply')[0]
print(status.text)
print(" ")
print("★☆出力完了☆★")
browser.close()
抽出できました!
やはりXPATHは便利ですねb
終わりに
seleniumはバージョンアップ前後でかなり書き方が違うようですね( ゚Д゚)
便利になったのかも定かではないですし、書き換えるとなると面倒そうです・・・。
参考ページ
Selenium 概要
https://anken-hyouban.com/blog/2021/07/11/selenium/
XPATHについて
https://www.octoparse.jp/blog/essential-for-web-scraping-xpath-introduction
Seleniumを使って要素を見つける
https://kurozumi.github.io/selenium-python/locating-elements.html