はじめに
先日、スクレイピングをする必要があり、初めてやってみました。
知識ゼロの状態で、一時的なコードはほとんど AI に生成してもらいながら進めました。
何も理解しないまま終わるのはもったいないと感じたので、結局なにがなにをしていたのかを備忘録として残します。
Selenium
Selenium はブラウザを自動操作するためのライブラリ。
Python からマウスやキーボード操作を自動で行えます。
driver はその操作対象となるブラウザです。
実際には以下のようなことをしていました。
# driverの用意
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# ページを開く
driver.get(URL)
# 要素を取得
feed_list = driver.find_element(By.CLASS_NAME, "vw_feed_list")
articles = feed_list.find_elements(By.CSS_SELECTOR, "article.vw_feed_post")
# 要素をクリック
top_article = articles[0]
top_article.click()
BeautifulSoup
取得した HTML から欲しい部分だけを抜き出すためのライブラリ。
タグやクラス名、id を指定して要素を抽出しました。
例: divタグの一部分を抽出
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
modal = soup.find("div", id="modalPortal")
例: 日付の抽出
date_elem = soup.find("span", class_="time", id="dateTime")
感想
- 流れとしては、ページを操作 → HTMLを取得 → 中身を解析する流れ
- こうして分解してみると、案外むずかしくないと感じました