Python自動化前処理 サンプルコード

pip install pandas selenium

 

import pandas as pd
import os
from selenium import webdriver
from urllib.request import urlretrieve

def download_from_extension_url(browser, url, download_path):
    """extension:// URLからリソースをダウンロードするための関数"""
    browser.get(url)
    # 必要な操作をSeleniumで実行 (例: ボタンクリックやフォーム入力など)
    # ここを実際の操作に合わせて調整する必要がある
    # ...

def main():
    # Excelファイルの選択
    file_path = input("Excelファイルのパスを入力してください: ")

    # Excelファイルの読み込み
    df = pd.read_excel(file_path, sheet_name="生技_作業手順")

    # フィルタリング
    df_filtered = df[df['A'].str.startswith("〇", na=False)]

    # ダウンロード先のフォルダを設定
    download_folder = os.path.join(
        "C:\\Users\\takka\\OneDrive\\デスクトップ\\ここに保存",
        f"{pd.Timestamp('now').strftime('%y.%m.%d')}_{os.path.basename(file_path).replace('.xlsx', '').replace('.xls', '')}"
    )

    # ダウンロード先のフォルダが存在しなければ作成
    if not os.path.exists(download_folder):
        os.makedirs(download_folder)

    # Microsoft Edgeのドライバを使用してブラウザを起動
    browser = webdriver.Edge()

    for index, row in df_filtered.iterrows():
        file_name, file_url = row[3], row[4]

        # 必要なデータの確認
        if pd.isna(file_name) or pd.isna(file_url):
            print(f"{index}行目に必要なデータが不足しています。")
            continue

        target_file_path = os.path.join(download_folder, f"{file_name}.pdf")

        # "extension://"のURLの場合
        if file_url.startswith("extension://"):
            download_from_extension_url(browser, file_url, target_file_path)
        else:
            # 通常のURLの場合、ダウンロード
            try:
                urlretrieve(file_url, target_file_path)
            except Exception as e:
                print(f"{index}行目のファイルをダウンロードできませんでした。不正なURLかもしれません: {file_url}")

    browser.quit()  # ブラウザを閉じる
    print("処理完了!")

if __name__ == "__main__":
    main()