aws lambda에서 Python + Selenium + Headless Chromium

Lambda에서 스크래핑을 정기적으로 실행하여 DynamoDB에 저장하는 응용 프로그램을 만들고 있습니다.

조속히 구그하면 많이 기사가 나온다. 고맙습니다.
이쪽의 기사를 참고로 해서 트라이하고 있었지만, 2일 정도 빠져버린 포인트가 있었으므로 메모.

  • chromedriver 2.43 htps : // ch로메 d리ゔぇr. s 가시. ㅇㅜㅜㅜㅜ 이 m/그리고 x. HTML? Path = 2.43 /

  • 이쪽의 chromedriver_linux64.zip
  • serverless chrome v1.0.0-55 htps : // 기주 b. 코 m / 아에 우 아 아에 / 세 r ゔ ぇ r ぇ s ch 로메 / ぇ あ せ s / 타 g / v1.0.0-55
       stable-headless-chromium-69.0.3497.81-amazonlinux-2017-03.zip
  • selenium 3.14

  • 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와도 망설였지만,
  • 작성해야하는 스크래핑 수가 매우 많아 스크래핑 코드를 편안하게 작성할 수 있음을 강조하고 싶습니다.
  • Ajax를 사용하는 사이트에서도 올바르게 정보를 얻고 싶습니다.
  • AWS 공부하고 싶다
    그래서 개인적으로 단순 명쾌하게 취급할 수 있다고 느낀 셀레늄을 lambda상에서 움직이기로 했습니다.
  • 좋은 웹페이지 즐겨찾기