PythonはWebスクレイピングに非常に便利な言語です。ライブラリが充実しているため、簡単にWeb上のデータを取得することができます。今回はPythonで可能な2種類のスクレイピングの手法についてまとめてみました。
静的なHTMLからデータを取得する(BeautifulSoup4)
Pythonにおけるスクレイピングといえば、BeautifulSoupライブラリによる手法が最も一般的です。この手法は、取得先のサイトが静的なHTMLである場合やサーバー側の動的なHTML出力である場合に有効な手法です。
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import urllib.request as req
# 通貨設定
crypto = 'BTC'
currency = 'JPY'
# 価格の取得先
url = 'https://coinyep.com/ja/ex/' + crypto + '-' + currency
# 取得結果
current_value = ''
# 取得先URLにアクセス
res = req.urlopen(url)
# 対象を抽出
soup = BeautifulSoup(res, 'html.parser')
values = soup.select_one("#coinyep-reverse1").findAll(text=True)
current_value = str(''.join(values))
current_value = current_value.replace('1 ' + crypto + ' = ', '')
current_value = current_value.replace(' ' + currency, '')
# 取得結果
print('1' + crypto + '(' + currency + '): ' + str(current_value))
動的にJavaScriptで出力されるHTMLのデータを取得する(Selenium & ChromeDriver)
動的にJavaScriptで出力されるHTMLのデータを取得するためには、SeleniumライブラリとChromeDriverを使用します。Seleniumはブラウザを自動制御するためのツールで、JavaScriptで描画されたページからデータを取得することが可能です。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://news.yahoo.co.jp/')
headlines = driver.find_elements_by_css_selector('#uamods-topics > div > div > div > ul a')
for headline in headlines:
print(headline.text)
以上、PythonとJavaScriptを用いたWebスクレイピングについての基本的な手法を紹介しました。これらの手法を組み合わせることで、様々なWebサイトから情報を取得することが可能となります。ただし、スクレイピングを行う際には、対象のWebサイトの利用規約を遵守し、適切な方法で行うことが重要です。.