2

我使用Selenium Marrionette和GeckoDriver來提取Web數據。我用下面的設置我的Firefox配置偏好:閱讀Unable to set firefox profile preferencesFirefoxProfile passed to FirefoxDriverPython爲Selenium設置Firefox首選項 - 下載位置

fp = webdriver.FirefoxProfile() fp.set_preference("browser.download.folderList", 1) fp.set_preference("browser.helperApps.alwaysAsk.force", False) fp.set_preference("browser.download.manager.showWhenStarting",False) fp.set_preference("browser.download.dir", "H:\Downloads") fp.set_preference("browser.download.downloadDir","H:\Downloads") fp.set_preference("browser.download.defaultFolder","H:\Downloads")

binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')

firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['marionette'] = True

driver = webdriver.Firefox(capabilities=firefox_capabilities,firefox_binary=binary, firefox_profile = fp)

據我所知,似乎沒有什麼是現在使用firefox_profile時完成。所以我需要實施firefox_capabilities的新更新,但我不確定如何完全做到這一點。有任何想法嗎?

回答

3

好的,我相信我終於明白了這一切。除了使用上面的代碼中,我用下面的代碼,我指向我的Firefox的配置文件夾(如果你需要更新您的默認配置文件設置這樣做,在Firefox中運行此代碼之前):

from selenium.webdriver.firefox.options import Options 
binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe') 
fp = (r'C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\oqmqnsih.default') 
opts = Options() 
opts.profile = fp 
firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
driver = webdriver.Firefox(capabilities=firefox_capabilities,firefox_binary=binary, firefox_options = opts) 

我跑這代碼以及我的網頁抓取代碼,一旦我點擊「導出CSV」鏈接,它會自動下載,而不是彈出「下載管理器」窗口。隨意添加任何反饋。

0

取而代之的是前面的回答,您可以右擊,選擇另存爲並將其保存到所需的目錄,並在該點之後,該目錄將成爲該會話和您在默認目錄可以用相同的方法改變它。但是,如果您希望該路徑是動態的並且在同一個會話中以編程方式更改它,那麼這也不是一個解決方案。所以對於這個問題的答案是here。如果你可以使用Chrome的驅動程序然而,按照this answer

0

說明書(上raspi 3)我的python腳本的解決方案:

二進制= FirefoxBinary('的/ usr/bin/firefox') 驅動程序= webdriver.Firefox(capabilities = {'browserName':'firefox'},firefox_binary = binary)

0

初始代碼部分正確。您必須將browser.download.folderList值設置爲2:

fp = webdriver.FirefoxProfile() 
fp.set_preference("browser.download.folderList", 2) # 0 means to download to the desktop, 1 means to download to the default "Downloads" directory, 2 means to use the directory 
fp.set_preference("browser.helperApps.alwaysAsk.force", False) fp.set_preference("browser.download.manager.showWhenStarting",False) fp.set_preference("browser.download.dir", "H:\Downloads") 

binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe') 

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 

driver = webdriver.Firefox(capabilities=firefox_capabilities,firefox_binary=binary, firefox_profile = fp) 
相關問題