Вы можете запустить браузер с параметром --headless
, и он не будет отображать свое окно. Работает для Firefox и Chrome.
Firefox
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
#options.headless = True
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)
driver.get('https://stackoverflow.com')
driver.save_screenshot('screenshot-firefox.png')
driver.close()
Chrome
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
#options.headless = True
options.add_argument('--headless')
#options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
driver.get('https://stackoverflow.com')
driver.save_screenshot('screenshot-chrome.png')
driver.close()
Был веб-драйвер PhantomJS, который имитировал безголовый веб-браузер, но больше не разрабатывался. Этот код все еще выполняется, но он дает мне пустой page_source
и пустой файл screenshot.png
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('https://stackoverflow.com')
print(driver.page_source)
driver.save_screenshot('screenshot.png')
driver.close()
В Linux вы можете использовать Xvfb для создания поддельного / виртуального монитора, а программа может использовать его для отображения своего окна. Таким образом, вы не видите это окно на своем экране.
Все эти методы должны отображать страницу, чтобы она не работала быстрее.
Для более быстрой очистки вам придется анализировать запросы / ответы от / к веб-браузеру и делать то же самое с модулем Python requests
- но это не так просто. Но в этом случае программе не нужно отображать страницу и запускать JavaScript, поэтому она будет работать намного быстрее.
Но тогда у вас может быть другая проблема - если вы делаете запрос слишком обидно (слишком быстро), тогда сервер может заблокировать вас, и вам нужны прокси-серверы для разных IP-адресов.