\

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を保存する基本的な方法です。ただし、これらの方法を使用する際には、アクセス対象サイトの利用規約をよく読み、機械的なダウンロードが禁止されていないことを確認してください。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です