2

セレンを使用したヘッドレスクロムによるファイルのダウンロードの問題は、それがasked hereだったので1か月以上前には問題があるようです。私は彼らがバグのスレッドにあるjsをどのように実装しているのか分かりません。追加できるオプションがあるのか​​、それとも現在の修正がありますか? here に位置し、元のバグのページには、私のものはすべて、Pythonで、今日のよう最新10/22/17セレンとヘッドレスのクロムをPythonでダウンロード

です:

from selenium import webdriver 


options = webdriver.ChromeOptions() 

prefs = {"download.default_directory": "C:/Stuff", 
     "download.prompt_for_download": False, 
     "download.directory_upgrade": True, 
     "plugins.always_open_pdf_externally": True 
     } 

options.add_experimental_option("prefs", prefs) 
options.add_argument('headless') 
driver = webdriver.Chrome(r'C:/Users/aaron/chromedriver.exe', chrome_options = options) 

# test file to download which doesn't work 
driver.get('http://ipv4.download.thinkbroadband.com/5MB.zip') 

ヘッドレスオプションが削除された場合、これは何の問題も働きません。

ダウンロードしようとしている実際のファイルは、.aspxのURLにあるPDFです。私は.click()を実行してそれらをダウンロードしています。ヘッドレスバージョンではなく、素晴らしい動作をします。 hrefはjavascript do_postbackスクリプトです。

答えて

0

なぜアンカーhrefを見つけてからget requestを使用してファイルをダウンロードしてください。この方法でヘッドレスモードで動作し、はるかに高速になります。私はC#でそれをしています。

def download_file(url): 
    local_filename = url.split('/')[-1] 
    # NOTE the stream=True parameter 
    r = requests.get(url, stream=True) 
    with open(local_filename, 'wb') as f: 
     for chunk in r.iter_content(chunk_size=1024): 
      if chunk: # filter out keep-alive new chunks 
       f.write(chunk) 
       #f.flush() commented by recommendation from J.F.Sebastian 
    return local_filename 
+0

私はpdfsをダウンロードしようとしていますが、hrefは実際にはjavascriptのdo_postbackスクリプトです。 pdfsを見るときに生成されるリンクはすべてidencital .aspx URLです。 –

1

私は(あなたがバグチケットにリンクされているとして)クロムはこのfeatureをサポートしていることを今信じて、それが機能のサポートを追加するためにchromedriverチームに落ちます。オープンチケットhereがありますが、現時点で優先順位が高いとは思われません。この機能が必要な方は、ぜひ+1してください!

関連する問題