Headless chrome에서 Selenium을 사용해 보았습니다.
10753 단어 Chrome파이썬셀레늄selenium-webdriver병렬화
코드는 GitHub 에 정리했습니다.
추가
실행 환경
Headless Chrome이란?
Google 크롬 59에서 도입된 Chrome을 화면 없이 작동하는 모드입니다. 이것에 의해, 자동 테스트나 UI가 없는 서버 환경에서 사용할 수 있다는 것.
*Windows 전용 Chrome 60에서 지원되는 것 같습니다.
준비
파이썬 의존 라이브러리
이번에는 다음 라이브러리를 사용합니다.
Selene - Selenide을 Python으로 구현하여 Selenium을 다루기 쉽습니다. *
파이썬 webdriver manager - 브라우저 드라이버를 자동으로 설치하고 관리합니다 **
joblib - 병렬화 실행에 사용
*아직 α 버전이므로 API가 변경될 수 있습니다.
**설치된 드라이버는 기본적으로 ~/.wdm/이하에 저장됩니다
종속 라이브러리 설치
pre-release 최신 버전의 selene을 설치합니다.
위의 라이브러리는 selene 설치시 동시에 들어갑니다.
또, six는 왠지 의존하고 있는데 함께 들어가지 않았기 때문에 별도로 인스톨합니다.
pip install selene --pre
pip install six
샘플 코드
Google 검색을 수행하고 결과를 스크린 샷하는 간단한 방법입니다.
sample_selene.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selene.driver import SeleneDriver
from webdriver_manager.chrome import ChromeDriverManager
# run chrome headless
options = Options()
options.add_argument('--headless')
# install chromedriver if not found and start chrome
driver = SeleneDriver.wrap(webdriver.Chrome(executable_path=ChromeDriverManager().install(), chrome_options=options))
# search 'python' in google
driver.get('https://www.google.co.jp/')
input = driver.find_element_by_name('q')
input.send_keys('Python')
input.send_keys(Keys.RETURN)
# save screen shot
driver.save_screenshot('result.png')
driver.quit()
실행 결과는 다음과 같습니다.
샘플 코드 병렬화
sample_selene_parallel.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selene.driver import SeleneDriver
from webdriver_manager.chrome import ChromeDriverManager
from joblib import Parallel, delayed
# search 'keyword' in google
def google(url, keyword):
# run chrome headless
options = Options()
options.add_argument('--headless')
driver = SeleneDriver.wrap(webdriver.Chrome(executable_path=ChromeDriverManager().install(), chrome_options=options))
driver.get(url)
input = driver.find_element_by_name('q')
input.send_keys(keyword)
input.send_keys(Keys.RETURN)
# save screen shot
driver.save_screenshot(keyword + '.png')
driver.quit()
url = 'https://www.google.co.jp/'
keywords = ['Python', 'Google', 'Selenium']
# n_jobs=-1 means use all of the resources you can`
Parallel(n_jobs=-1)(delayed(google)(url,keyword) for keyword in keywords)
실행 결과는 다음과 같습니다. 파이썬의 결과는 할애.
참고 링크
Reference
이 문제에 관하여(Headless chrome에서 Selenium을 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kaitoii11/items/5296341de8fd553e8c92텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)