我一直在尝试从以下网站下载 pdf 文件: http://www.cub.org.br/cub-m2-estadual/CE/
问题是,当我单击“Gerar Relatório em PDF”(英文“生成 PDF 报告”)时,Chrome 会向我发出一条消息,说下载被阻止,因为该文件不可信。我在 Selenium Python 中尝试了很多方法来绕过这个安全消息。然而,我仍然收到这个“错误”。
下面是我的代码:
` # 帕德拉奥意大利面 下载目录 = os.getcwd()
# Instância Chrome Options
chrome_options = Options()
# Configurando Chrome Para Permitir Dowload do PDF
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-plugins")
chrome_options.add_argument("--incognito")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--disable-popup-blocking")
chrome_options.add_argument("--ignore-certificate-errors")
chrome_options.add_argument("--allow-insecure-localhost")
# Pasta Download
prefs = {
"download.default_directory": download_dir,
"download.prompt_for_download": False,
"plugins.always_open_pdf_externally": True,
"download.open_pdf_in_system_reader": False,
"profile.default_content_settings.popups": 0,
"safebrowsing.enabled": True
}
chrome_options.add_experimental_option('prefs', prefs)
# Instância Chrome
driver = webdriver.Chrome(service=service,
options=chrome_options)
driver.maximize_window()
time.sleep(2)
# Acessando Site
driver.get('http://www.cub.org.br/cub-m2-estadual/CE/')
time.sleep(2)
# Verifica Anos Disponíveis
# Na Lista Suspensa
lista_suspensa = Select(driver.find_element(By.NAME, 'ano'))
opcoes_lista_suspensa = [item.text for item in lista_suspensa.options]
# Seleciona Primeiro Elemento da Lista
# Que é o Ano Mais Recente
lista_suspensa.select_by_value(opcoes_lista_suspensa[0])
# Clicando Baixar Relatório
download_file_xpath = '//*[@id="wrapper"]/div/div[1]/div/div[1]/div[2]/div/form/input[2]'
driver.find_element(By.XPATH, download_file_xpath).click()
`
我相信 ChromeDriver 的行为不久前已经发生了变化。以下是使其正常工作所需的选项/首选项:
chrome_options.add_argument("--unsafely-treat-insecure-origin-as-secure=http://www.cub.org.br")
prefs = {
"download.default_directory": download_dir,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
}