skip to content
barorin&?

BeautifulSoup4の基本

/ 1 min read

はじめに

BeautifulSoup4の基本的な使い方をまとめてみます。

内容

基本のキ

import requests
from bs4 import BeautifulSoup

# htmlの取得
res = requests.get('https://www.hoge.com/')

# ローカルに保存
with open('res.html', 'w') as file:
    file.write(res.text)

# htmlパース
soup = BeautifulSoup(res.text, 'html.parser')

# ローカルのhtmlファイルからパースする場合
soup = BeautifulSoup(open('res.html'), 'html.parser')

selenium と組み合わせて使う

from urllib.parse import urljoin
import re

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# driverのオプション設定
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',options=options)
driver.implicitly_wait(10)

# 基本設定
base_url = 'https://www.hoge.com/'
driver.get(base_url)
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, 'html.parser')

# 特定の文字を取得
titles = [title.get_text(strip=True) for title in soup.find_all('p', class_='クラス名')]

# リンク先の取得
attrs = {'href': re.compile(r'/home.\*')} # /homeで始まるURLだけ抜き出す設定
links = [urljoin(base_url, url.get('href')) for url in soup.find_all('a', attrs=attrs)]