aws lambda에서 Python + Selenium + Headless Chromium
조속히 구그하면 많이 기사가 나온다. 고맙습니다.
이쪽의 기사를 참고로 해서 트라이하고 있었지만, 2일 정도 빠져버린 포인트가 있었으므로 메모.
이쪽의
chromedriver_linux64.zip
stable-headless-chromium-69.0.3497.81-amazonlinux-2017-03.zip
cloud9 (AmazonLinux)에서 가져옵니다
람다 레이어는 파이썬 3.6
당연히 lambda 런타임도 3.6
하마리 포인트
여러 번 버전을 확인했지만 lambda에서 다음 오류Chrome failed to start: exited abnormally\n (unknown error: DevToolsActivePort file doesn't exist)
이하의 기사 등, 옵션에 몇개인가 추가하는 것으로 고치는 의견이 많다.
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 50642308 / ぇ bd ゔ ぇ ㅇ x 삐 삐 응 k의 w 응 에로 r에서 v와 ㅔ ぃDoe s t-e-st-u-t-t
기사에서는 java 코드이지만 Python을 고치고,
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
그러나
다른 오류 발생unknown error: unable to discover open window in chrome
결국 위의 일부에 추가하여이 기사의options.add_argument("--single-process")
를 더하여 해결했다.
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 60229291 / 아 ws ぁ mb da-byc 등 로 루 우나 b ぇ와 ぢ s 코 v
options.add_argument("--headless")
이외에 궁극적으로 문제 해결로 추가 한 옵션 설정은 여기
options.add_argument("--single-process")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
하마리 포인트 또 하나
람다에 레이어를 업로드 할 때,
headless-chrome이라는 dir에 headless-chrome과 chromedriver 두어 zip화했지만, 7zip으로 하면 ejecutable may have wrong permission 같은 에러로 움직이지 않고.
여러가지 보면, windows의 zip이라면, 배포 패키지가 잘 움직이지 않는 것 같기 때문에, wsl의 ubuntu로 zip화하면. 이 문제는 해결되었습니다.
비고
스크래핑 방법에 대해 Cloud Funtion + Typescript Puppeteer와도 망설였지만,
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
options.add_argument("--single-process")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
람다에 레이어를 업로드 할 때,
headless-chrome이라는 dir에 headless-chrome과 chromedriver 두어 zip화했지만, 7zip으로 하면 ejecutable may have wrong permission 같은 에러로 움직이지 않고.
여러가지 보면, windows의 zip이라면, 배포 패키지가 잘 움직이지 않는 것 같기 때문에, wsl의 ubuntu로 zip화하면. 이 문제는 해결되었습니다.
비고
스크래핑 방법에 대해 Cloud Funtion + Typescript Puppeteer와도 망설였지만,
그래서 개인적으로 단순 명쾌하게 취급할 수 있다고 느낀 셀레늄을 lambda상에서 움직이기로 했습니다.
Reference
이 문제에 관하여(aws lambda에서 Python + Selenium + Headless Chromium), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kounorimich/items/f83753847c2d55a30eb9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)