PythonとSeleniumを使用してWebページのHTMLを保存する方法について説明します。
現在のページのHTMLソースを取得
Seleniumを使用して、現在のページのHTMLソースを取得することができます。以下にそのコードを示します。
html = driver.page_source
with open('hoge.html', 'w', encoding='utf-8') as f:
f.write(html)
このコードは、現在開いているページのHTMLソースを取得し、それを’utf-8’エンコーディングで’hoge.html’という名前のファイルに書き込みます。
クリックでダウンロード
クリックイベントでダウンロードが始まる要素を見つけておいて、.click()
を使用します。<a href...>
をたどるとダウンロードされるならば、.get_attribute("href")
などでURLを取得してからdriver.get(<URL>)
も可能です。
直接ダウンロード
画像などを直接ダウンロードするには、urllib.request.urlretrieve
を使用することができます。以下にそのコードを示します。
import urllib.request
url = driver.find_element_by_id("logo").get_attribute("src")
urllib.request.urlretrieve(url, 'logo.png')
このコードは、id属性が”logo”の画像要素のURLを取得し、そのURLから画像をダウンロードして’logo.png’という名前のファイルに保存します。
PDFダウンロードとファイル保存先変更
PDFはデフォルトではChromeで表示されてしまうので、ファイルとしてダウンロードできるようにし、ついでに保存先のフォルダを明示的に指定します。
from selenium import webdriver
from pathlib import Path
dldir_name = 'download'
dldir_path = Path(dldir_name)
dldir_path.mkdir(exist_ok=True)
download_dir = str(dldir_path.resolve())
options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {
"download.default_directory": download_dir,
"plugins.always_open_pdf_externally": True
})
driver = webdriver.Chrome(options=options)
driver.get("http://aaa.bbb.ccc/hoge.pdf")
このコードは、PDFをダウンロードし、保存先のフォルダを指定する方法を示しています。
以上がPythonとSeleniumを使用してHTMLを保存する基本的な方法です。ただし、これらの方法を使用する際には、アクセス対象サイトの利用規約をよく読み、機械的なダウンロードが禁止されていないことを確認してください。.