Администраторы, Редакторы
684
правки
Denis.s (обсуждение | вклад) Нет описания правки |
(Меняем пример на Firefox) |
||
Строка 8: | Строка 8: | ||
Selenium состоит из двух главных частей: WebDriver, программа, управляющая браузером и библиотека для любимого вами языка. Я обычно загружаю WebDriver в свою пользовательскую директорию в Linux, "~/.local/bin" - директория, куда я могу складывать исполняемые файлы, она существует в переменной PATH как для Bash, так и для ZSH, этого мне достаточно. У вас может и не быть ZSH, поэтому правки "~/.bashrc" должно хватить. | Selenium состоит из двух главных частей: WebDriver, программа, управляющая браузером и библиотека для любимого вами языка. Я обычно загружаю WebDriver в свою пользовательскую директорию в Linux, "~/.local/bin" - директория, куда я могу складывать исполняемые файлы, она существует в переменной PATH как для Bash, так и для ZSH, этого мне достаточно. У вас может и не быть ZSH, поэтому правки "~/.bashrc" должно хватить. | ||
Для примера мы рассмотрим этот сайт и экспорт страниц. В | Для примера мы рассмотрим этот сайт и экспорт страниц. | ||
Использовать я буду Google Chromium и chromium-chromedriver из Ubuntu Linux, как очень распространённые штуки, которые может установить почти каждый. В будущем этот пример стоит переделать, выводя опции наружу функций, запускающих Chromium, или вообще используя один процесс браузера, но пока и так сойдёт. Также мы предполагаем, что загрузка занимает менее 60 секунд. | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Строка 18: | Строка 19: | ||
from selenium import webdriver | from selenium import webdriver | ||
from selenium.common.exceptions import NoSuchElementException, TimeoutException | from selenium.common.exceptions import NoSuchElementException, TimeoutException | ||
Строка 39: | Строка 38: | ||
def obtain_page_list(headless=True): | def obtain_page_list(headless=True): | ||
result = [] | result = [] | ||
chrome_options = webdriver.ChromeOptions() | |||
# Configure headless Chrome options | |||
chrome_options.add_argument("--headless") | |||
# Wonder if it is needed at all for a headless downloader | |||
driver = webdriver. | chrome_options.add_argument("--window-size=1920x1080") | ||
chrome_options.add_argument("--disable-notifications") | |||
chrome_options.add_argument('--no-sandbox') | |||
chrome_options.add_argument('--verbose') | |||
chrome_options.add_argument('--disable-gpu') | |||
chrome_options.add_argument('--disable-software-rasterizer') | |||
# Create a Chromedriver instance | |||
driver = webdriver.Chrome(chrome_options=chrome_options) | |||
# Launch browser with our url | # Launch browser with our url | ||
driver.get(ALL_PAGES_URL) | driver.get(ALL_PAGES_URL) | ||
Строка 57: | Строка 63: | ||
def download_exported_pages(page_names, headless=True): | def download_exported_pages(page_names, headless=True): | ||
chrome_options = webdriver.ChromeOptions() | |||
# Configure headless Chrome options | |||
chrome_options.add_argument("--headless") | |||
# Wonder if it is needed at all for a headless downloader | |||
chrome_options.add_argument("--window-size=1920x1080") | |||
chrome_options.add_argument("--disable-notifications") | |||
chrome_options.add_argument('--no-sandbox') | |||
chrome_options.add_argument('--verbose') | |||
chrome_options.add_argument('--disable-gpu') | |||
chrome_options.add_argument('--disable-software-rasterizer') | |||
# Set a save directory | # Set a save directory | ||
save_dir = getcwd() | save_dir = getcwd() | ||
default_types = "application/xml, attachment/xml, text/xml" | # default_types = "application/xml, attachment/xml, text/xml" | ||
chrome_options.add_experimental_option("prefs", { | |||
"download.default_directory": save_dir, | |||
"download.prompt_for_download": False, | |||
"download.directory_upgrade": True, | |||
"safebrowsing_for_trusted_sources_enabled": False, | |||
"safebrowsing.enabled": False | |||
}) | |||
# Create a Chromedriver instance | |||
driver = webdriver.Chrome(chrome_options=chrome_options) | |||
driver = webdriver. | |||
# Log a save directory | # Log a save directory | ||
print('Saving a file to "{}"...'.format(save_dir)) | print('Saving a file to "{}"...'.format(save_dir)) | ||
Строка 118: | Строка 132: | ||
main() | main() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Категория:Незавершённые страницы]] [[Категория:Методичка]] | [[Категория:Незавершённые страницы]] [[Категория:Методичка]] |