スタック・オーバーフロー Asked by Tani chan on November 20, 2021
Selenium から Google Chrome を自動操作し、CSVダウンロードボタンの要素をクリックしてダウンロードさせることまでできました。
ダウンロードする時に「名前を付けて保存」のダイアログが出てくるのですが、「保存する場所」「ファイル名」を指定する方法を教えてください。
以下のサイトを参考に試してみましたがエラーになりました。
SeleniumのChrome driverのデフォルトダウンロードフォルダを設定する – Qiita
よろしくお願いします。
from selenium import webdriver
chromeOptions = webdriver.ChromeOptions("chromedriver.exe")
prefs = {"download.default_directory" : "C:Users\*****\Desktop"}
chromeOptions.add_experimental_option("prefs",prefs)
#Chrome diriverのパス
chromedriver = "chromedriver.exe"
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chromeOptions)
File "<ipython-input-1-41dea91d03de>", line 4
prefs = {"download.default_directory" : "C:Users\*****\Desktop"}
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape
Python 3.7.3
Windows 7
Jupyter Notebook
ちなみに、それはまさに紹介記事の注意点に書いてある内容ではないですか?
注意点
download.default_directory
にパスを設定するときは階層の区切り文字を\
とするか、文字列の前にRAWの意味のr
またはR
をつけて記述します。ex( r"C:Users{username}Downloadstest" )
このときドライブのルート階層の文字は区切り文字を1つ
ex( C: )
にしないとうまくいきません。chromedriverのパスはスラッシュ(/
)区切りとし、webdriverをインスタンス化するときにexecutable_path
とchrome_options
を引数として渡します。
エラーコードの以下のメッセージは、パス先頭C:Users
のU
がUnicode16進数8桁のエスケープ表現の始まりだと判断したが、16進数8桁が続いていないのでエラーになった、と言っているのだと思います。
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape
紹介記事の注意点のように文字列の前にRAWの意味のr
またはR
を付けて以後の\
も2つではなく1つにするか、逆にC:Users
のを2つにするかすれば良いのではないでしょうか?
それから本来の名前付けに関して、この記事では「名前を付けてダウンロードすることは出来ない」が、「ダウンロードしたファイルの名前を変えることは出来る」と書いてあるようです。
Selenium give file name when downloading
You cannot specify name of download file through selenium. However, you can download the file, find the latest file in the downloaded folder, and rename as you want.
Note: borrowed methods from google searches may have errors. but you get the idea.Seleniumを使用してダウンロードファイルの名前を指定することはできません。 ただし、ファイルをダウンロードし、ダウンロードしたフォルダーで最新のファイルを見つけて、必要に応じて名前を変更できます。
注:Google検索から借用したメソッドにはエラーが発生する場合があります。 しかし、あなたはアイデアを得る。import os import shutil filename = max([Initial_path + "\" + f for f in os.listdir(Initial_path)],key=os.path.getctime) shutil.move(filename,os.path.join(Initial_path,r"newfilename.ext"))
Answered by kunif on November 20, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP