\

PythonとSeleniumを使用してWebページからファイルをダウンロードし、そのファイル名を取得する方法について説明します。

ダウンロード先の設定

まず、ダウンロード先のフォルダを指定します。これは、開発環境ごとに異なるダウンロード場所になってしまうことを防ぐためです。以下のコードは、ChromeDriverの立ち上げ時にダウンロードフォルダを設定する例です。

from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.chrome.webdriver import WebDriver
import os

downloadsFilePath = './downloads'

class WebDriverModule(object):
    def getChromeDriver(self)->WebDriver:
        return webdriver.Chrome(options=self.getCoromeOptions())

    def getCoromeOptions(self)->ChromeOptions:
        options = ChromeOptions()
        prefs = {
            "plugins.always_open_pdf_externally": True,
            "profile.default_content_settings.popups": 1,
            "download.default_directory": os.path.abspath(downloadsFilePath) + r"\\\\",
            "directory_upgrade": True
        }
        options.add_experimental_option("prefs", prefs)
        return options

webDriverModule = WebDriverModule()
driver = webDriverModule.getChromeDriver()

このコードでは、plugins.always_open_pdf_externally=Trueを設定することで、PDFファイルにアクセスした際に、デフォルトのViewerを使う処理を制御し、ファイルを直接ダウンロードできます。

ファイル名の取得

次に、ダウンロードしたファイルの名前を取得します。これは、ダウンロード直後に、ファイル名をすぐ取得する処理ができないか検討するためです。以下のコードは、ダウンロードディレクトリ内の最新ダウンロードファイル名を取得する例です。

class WebDriverModule(object):
    def getLatestDownloadedFileName(self):
        if len(os.listdir(downloadsFilePath)) == 0:
            return None
        return max(
            [downloadsFilePath + f for f in os.listdir(downloadsFilePath)],
            key=os.path.getctime
        )

このコードでは、osmax(list, key)を使用して、ダウンロード先内の全ファイルから「最新の日付のファイル」という条件で1ファイル取得します。

以上の手順により、PythonとSeleniumを使用してダウンロードしたファイル名を取得することができます。これらの手順を組み合わせることで、Webスクレイピングにおける自動ファイルダウンロードの課題を解決することができます。.

投稿者 admin

コメントを残す

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