#selenium #selenium-webdriver #selenium-chromedriver
Вопрос:
Я хотел включить автоматическую загрузку PDF-файлов с помощью selenium для python. Однако, хотя я включил автоматическую загрузку PDF-файлов, сами PDF-файлы на самом деле не загружаются. Причина этого в том, что мне нужно разрешить небезопасный контент с URL-адреса. Поскольку этого не происходит, автоматическая загрузка не происходит, и есть только серый экран. Я просмотрел некоторые сообщения и добавил некоторые опции для включения небезопасного контента, но это не работает.
Вот мой код:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_experimental_option('prefs', {
"download.default_directory": "/Users/xxxx/DownloadedPDFs", #Change default directory for downloads
"download.prompt_for_download": False, #To auto download the file
"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True, #It will not show PDF directly in chrome
"safebrowsing_for_trusted_sources_enabled": False,
"safebrowsing.enabled": False
})
chromeOptions.add_argument("--disable-web-security")
chromeOptions.add_argument("--allow-running-insecure-content")
chromeOptions.add_argument("--ignore-ssl-errors=yes")
chromeOptions.add_argument("--ignore-certificate-errors")
chromeOptions.add_argument("--allow-insecure-localhost")
driver = webdriver.Chrome(options=chromeOptions)
driver.get("url")
# there is an actual url here, I just put URL as a placeholder
time.sleep(10)
elements = driver.find_elements_by_class_name("annualreports_link")
for element in elements:
element.click()
Что я знаю, так это то, что PDF-файлы правильно загружаются в отдельную папку, если URL-адрес добавляется к небезопасному контенту, и настройки для этого можно найти здесь при нажатии на «Небезопасный контент» в настройках сайта:
Url — адрес должен быть добавлен для отображения небезопасного контента
Комментарии:
1. У меня дважды была эта проблема с cUrl на сервере Ubuntu. Первым делом я решил загрузить сертификат и добавить его в список доверенных сертификатов моего сервера. У второго был самозаверяющий сертификат, и мне не удалось заставить его работать, но потом я понял, что веб-сайт принимает подключения по адресу por 80, поэтому я просто перешел на http вместо https.