2

特定のファイルを検索してダウンロードするWebクローラーがありますが、[名前を付けて保存するか開く]ダイアログが表示されたらPDFファイルをダウンロードするにはどうすればよいですか。私は現在、Pythonセレンを使用してクロールしています。これが私のコードです。

from selenium import webdriver
import time

browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.tda-sgft.com/TdaWeb/jsp/fondos/Fondos.tda") # Load page
link = browser.find_element_by_link_text("Mortgage Loan")
link.click()
link2 = browser.find_element_by_link_text("ABS")
link2.click()
link3 = browser.find_element_by_link_text("TDA 13 Mixto")
link3.click()
download = browser.find_element_by_link_text("General Fund Information")
download.click()

time.sleep(0.2) # Let the page load, will be added to the API
browser.close()
4

1 に答える 1

4

Firefox プロファイルの設定を変更する必要があります。browser.helperApps.neverAsk.saveToDiskそのダイアログの表示を停止するには、使用中のプロファイルのプロパティを設定する必要があります。これを行うには、次のようにします (これは CSV/Excel ファイル用であることに注意してください。タイプは「application/pdf」になると思います)。

profile = webdriver.firefox.firefox_profile.FirefoxProfile()
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('text/csv,'
                                                                  'application/csv,'
                                                                  'application/msexcel'))

あなたの場合(私はこれをPDFでテストしていないので、一粒の塩でそれを取ってください:))、これを試すことができます:

profile = webdriver.firefox.firefox_profile.FirefoxProfile()
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/pdf'))

Save As2 番目の引数は、プロンプトをトリガーしないファイルの種類を含むタプルです。次に、このプロファイルを に渡しますbrowser

browser = webdriver.Firefox(firefox_profile=profile)

そのタプルのタイプのファイルをダウンロードすると、プロンプトをバイパスしてデフォルトのディレクトリに配置する必要があります。ファイルのダウンロード先のディレクトリを変更する場合は、同じプロセスを使用して、いくつか変更するだけです (profileブラウザに をアタッチする前にこれを行ってください)。

profile.set_preference('browser.download.folderList': 2)
profile.set_preference('browser.download.dir': '/path/to/your/dir')
于 2012-08-23T20:26:10.043 に答える