Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- airflow
- 자료구조
- 데브코스
- Amazon
- 개념정리
- 웹자동화
- 관계형데이터베이스
- 데이터엔지니어
- 알고리즘
- 기술면접
- 프로그래머스
- AWS
- WEB
- SQL
- 클라우드
- 개발
- 데이터엔지니어링
- 웹크롤링
- 에어플로우
- 데이터웨어하우스
- CS
- 운영체제
- Django
- 데이터베이스
- DataWarehouse
- 파이썬
- Service
- 취준
- 웹스크래핑
- 부트캠프
Archives
- Today
- Total
사진과 음악을 좋아하는 개발자 지망생의 블로그
[airflow] airflow에서 webdriver, selenium 돌리기 본문
반응형
필요한 패키지 설치를 위한 dockerfile 작성
FROM ubuntu:latest
# 필요한 패키지 설치
RUN apt-get update && apt-get install -y curl gnupg
# Google Chrome 설치
RUN curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
RUN apt-get update && apt-get install -y google-chrome-stable
# Chrome WebDriver 설치
RUN apt-get install -yqq unzip
RUN curl -sSL https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip -o /tmp/chromedriver_linux64.zip
RUN unzip /tmp/chromedriver_linux64.zip -d /usr/local/bin/
RUN rm /tmp/chromedriver_linux64.zip
RUN chmod +x /usr/local/bin/chromedriver
CMD ["/bin/bash"]
dockerfile 실행 및 selenium에 필요한 yaml파일 수정
docker-compose.yml
.
.
.
services:
chrome:
build:
context: .
dockerfile: dockerfile.chrome
selenium:
container_name: remote_chromedriver
image: selenium/standalone-chrome:latest
ports:
- 4444:4444
restart: always
.
.
.
Docker 실행
docker-compose up -d
Webdriver 실행
# Chrome WebDriver 생성
chrome_options = Options()
# 브라우저를 표시하지 않고 실행 (headless 모드)
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
remote_webdriver = 'remote_chromedriver'
remote_webdriver = 'remote_chromedriver'
with webdriver.Remote(f'{remote_webdriver}:4444/wd/hub', options=options) as driver:
# Scraping part
pass
또는
# Chrome WebDriver 생성
chrome_options = Options()
# 브라우저를 표시하지 않고 실행 (headless 모드)
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
remote_webdriver = 'remote_chromedriver'
#webdriver
driver = webdriver.Remote(f'{remote_webdriver}:4444/wd/hub', options=chrome_options)
webdriver.Remote를 사용하는 이유
도커 환경에서는 컨테이너가 격리되어 있으며 독립적인 환경에서 실행해야 됨
따라서 Selenium과 WebDriver를 도커 컨테이너에서 사용하려면 웹드라이버를 독립적인 컨테이너로 실행해야 함
이때 webdriver.Remote를 사용하여 원격 웹드라이버에 연결함
원격 웹드라이버는 별도의 도커 컨테이너로 실행되며, 웹 브라우저를 제어하기 위한 드라이버 프로세스를 실행함
원격 웹드라이버는 웹드라이버 호스트 및 포트를 지정하여 연결할 수 있으며,
일반적으로 웹드라이버 호스트와 포트는 도커 네트워크에서 실행 중인 웹드라이버 컨테이너의 IP 주소와 포트를 사용함
따라서 Selenium과 WebDriver를 사용하여 웹 브라우저를 도커 컨테이너에서 제어하려면
원격 웹드라이버를 사용하여 컨테이너 외부의 웹드라이버에 연결해야 함.
이를 통해 도커 컨테이너 내부에서 독립적인 웹드라이버를 실행하고,
컨테이너 외부에서 웹드라이버에 연결하여 웹 브라우저를 제어할 수 있음.
반응형