eautifulSoup + Selenium + Python でスクレイピングを始める準備

2021年9月23日木曜日

Python

t f B! P L

スクロールしないと表示されない要素や、Javascript が絡む Web ページのスクレイピングは、BeautifulSoup だけでは出来ないので、Selenium と組み合わせるのが一般的である。

この記事では、Selenium で取得した Web ページの HTML を BeautifulSoup に読み込んでスクレイピングするための、最初の一歩を紹介する。

インストール

Python 本体はインストールされている前提とする。

Selenium と Webドライバー

Selenium と、Chrome の Web ドライバーをインストールする。インストール方法は以下の記事を参考に。

Python と Selenium でブラウザを操作して Google 検索する所までやってみよう

BeautifulSoup のインストール

BeautifulSoup と HTMLパーサーの lxml をインストールする。

pip の人は、

pip install beautifulsoup4
pip install lxml

Anaconda 環境の人は、

conda install -c anaconda beautifulsoup4
conda install -c anaconda lxml

でインストールしよう。

サンプルコード

準備ができたら、Selenium で取得した Web ページの HTML の内容を、BeautifulSoup で読み込む簡単なサンプルコードを作っていこう。

以下のコードは、指定した URL のサイトから、<img> タグのリストを取得する例である。

from bs4 import BeautifulSoup
from selenium import webdriver

url = "https://pixabay.com/ja/"

driver = webdriver.Chrome("/path/to/chromedriver") 
driver.get(url)

html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, "lxml")

elements =  soup.select("img.photo-result-image")
for el in elements:
  print(el)
スポンサーリンク

QooQ