BeautifulSoupとSeleniumの基本的な概要
スクレイピングとは、Webサイトから情報を取得することです。
BeautifulSoupは、HTMLやXMLファイルから情報を取得するためのPythonパッケージです。
Seleniumは、Webブラウザを自動化するためのツールです。JavaScriptやAjaxなどの動的なWebページもスクレイピングできます。
BeautifulSoupとSeleniumのインストール方法
BeautifulSoupのインストール方法は、ターミナルで以下のコマンドを実行します。
pip install beautifulsoup4
Seleniumのインストール方法は、ターミナルで以下のコマンドを実行します。
pip install selenium
BeautifulSoupを使ったスクレイピングの基本操作
BeautifulSoupを使ってWebページから情報を取得するには、以下の手順が必要です。
- requestsモジュールを使ってWebページのHTMLを取得する
- BeautifulSoupを使ってHTMLから必要な情報を取得する
以下は、aタグからテキストを取得するコードです。
import requests
from bs4 import BeautifulSoup
url = "スクレイピングするサイトのURL"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
for trend in soup.find_all("a", class_="tr-Item_title"):
print(trend.text)
Seleniumを使ったスクレイピングの基本操作
Seleniumを使ってWebページから情報を取得するには、以下の手順が必要です。
- Webドライバーをインストールする
- Seleniumを使ってWebブラウザを自動化する
- Webページから必要な情報を取得する
以下は、例として某検索サイトから検索結果のタイトルを取得するコードです。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("スクレイピングするサイトのURL")
search_bar = driver.find_element_by_name("q")
search_bar.send_keys("Python")
search_bar.send_keys(Keys.RETURN)
for result in driver.find_elements_by_css_selector("h3"):
print(result.text)
driver.quit()
BeautifulSoupとSeleniumを組み合わせたスクレイピングの実践例
以下は、例としてaタグからテキストとURLを取得するコードです。
from selenium import webdriver
from bs4 import BeautifulSoup
url = "スクレイピングするサイトのURL"
driver = webdriver.Chrome()
driver.get(url)
soup = BeautifulSoup(driver.page_source, "html.parser")
for trend in soup.find_all("a", class_="tr-Item_title"):
print(trend.text)
print(trend.get("href"))
driver.quit()
BeautifulSoupとSeleniumを使ったスクレイピングの注意点
スクレイピングはWebサイトの利用規約に違反する場合があります。また、過剰なアクセスによってWebサイトのサーバーに負荷をかけることもあります。スクレイピングを行う際には、以下の点に注意してください。
- Webサイトの利用規約を確認する
- 適切なアクセス頻度を設定する
- 個人情報や著作権などの法的な問題についても考慮する
まとめ
BeautifulSoupとSeleniumを使えば、Webページから必要な情報を簡単に取得することができます。ただし、スクレイピングには注意点があります。適切に利用するようにしましょう。


![[Python]PandasのDataFrameの平均値、中央値を求める方法](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/10/1-55.jpg)
![[python]CSVファイル読み込み(行指定、列指定(numpy、pandas))](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/11/1-301.jpg)

