環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

【PythonでWEBスクレイピング】スクレイピング結果をhtmlファイルに出力する(selenium)

【PythonでWEBスクレイピング】スクレイピング結果をhtmlファイルに出力する(selenium)

より複雑なスクレイピング処理を記述する時に、途中結果を確認したい時があります。そんなときはHTMLファイルに出力してみるのも一つの手!

ということで、ファイル出力してみます。

HTMLファイル出力

今回は以下のようなログイン処理を行った後に出力してみる。スクリプトは長ったらしいですが出力処理はちょっとです

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import sys
import time
import toml

# 設定読み込み
config = toml.load('config.toml')

# Chrome Driver
chromedriver_path = config['common']['driver_path']
options = webdriver.ChromeOptions()
options.add_argument('--headless')
service = Service(executable_path=chromedriver_path)
driver = webdriver.Chrome(service=service,options=options)
driver.set_script_timeout(5)

# ログイン画面
print("ログイン画面")
driver.get(config['common']['url_base'])

# 表示待機
print("【開始】ログイン画面表示待ち")
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "hogehoge")))
print("【終了】ログイン画面表示待ち")

# ログインステップ
print("ログインステップ")
login_id = driver.find_element(By.ID, "username")
login_id.send_keys(config['login']['id'])
login_password = driver.find_element(By.ID, "password")
login_password.send_keys(config['login']['pw'])
login_next = driver.find_element(By.NAME, "submit")
login_next.click()

#htmlで出力
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
file = open('result.html', 'w')
file.write(str(soup))
file.close()

ファイル出力に必要なのはこの部分

file = open('result.html', 'w')
file.write(str(soup))
file.close()

これでHTMLを確認することが出来ます。

まとめ

わたしの場合は、HTMLファイルを確認してみると、結果的にはログインに使用するIDとパスワードが間違っていてログイン失敗していました(笑)確認してみるもんですね!