スクロールしないと表示されない要素や、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)
0 件のコメント:
コメントを投稿