【그 1】Python으로 headless-chrome에서의 스크래핑(Docker Hub/Google CONTAINER REGISTER 등록편)

소개


  • headless-chrome을 GoogleCloudPlatform(GoogleAppEngine)에서 실행하고 Python에서 웹 스크래핑 결과를 CloudSQL 및 CloudStorage에 등록하는 것을 목표로 합니다.

  • 시작하기 전에 다음이 필요합니다.
  • github 계정
  • dockerhub 계정
  • docker 설치


  • Docker 이미지 생성



    docker 다운로드



    Dockerfile 만들기


  • github에 docker-python3-chrome-gcp 리포지토리 만들기
  • Dockerfile 내용

  • Dockerfile
    FROM python:3
    
    MAINTAINER kojipon <[email protected]>
    
    # Install libraries.
    RUN apt-get update -qqy \
        && apt-get -qqy install unzip curl wget xvfb xz-utils zlib1g-dev libssl-dev mysql-client
    
    # Install Google Chrome.
    RUN wget -q -O /tmp/google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
        && dpkg -i /tmp/google-chrome-stable_current_amd64.deb \
        ; apt-get -qqyf install
    
    # Install chromedriver.
    RUN wget -q -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip \
        && unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
    
    # Install GCP tools.
    RUN wget -q -O /tmp/cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 \
        && mv /tmp/cloud_sql_proxy /usr/local/bin/cloud_sql_proxy \
        && chmod +x /usr/local/bin/cloud_sql_proxy
    
    # Install Japanese font.
    RUN wget -q --content-disposition -O /tmp/IPAfont00303.zip http://ipafont.ipa.go.jp/old/ipafont/IPAfont00303.php \
        && unzip /tmp/IPAfont00303.zip -d /usr/share/fonts/ \
        && fc-cache -fv
    
    # Install python libraries
    RUN pip install selenium pytz google-cloud-bigquery mysql-connector-python-rf
    
  • Dockerfile 만들기
  • $ git clone [email protected]:<your-account>/docker-python3-chrome-gcp.git
    
    $ cd docker-python3-chrome-gcp
    
    $ vi Dockerfile
    <Dockerfile の内容を記載>
    
    $ git add-commit -m "Added Dockerfile."
    <備考: add-commit = !git add -A && git commit>
    
    $ git push -u origin master
    
    
  • Dockerfile에서 이미지 + 컨테이너 만들기
  • $ docker build --no-cache -t python3-chrome-gcp .
    
    ※ キャッシュが古くて更新させれていないパッケージがある場合は --no-cache で回避
    
    $ docker run -it --name dev1 python3-chrome-gcp bash
    
    $ echo " ¥
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument('--headless')
    driver = webdriver.Chrome(chrome_options=options)
    
    driver.get('https://www.google.co.jp/')
    print(driver.title)
    
    driver.quit()
    " >> sample.py
    
    $ python sample.py
    

    Docker 등록



    Docker Hub와 Github의 협력


  • 로그인 후 오른쪽 상단 메뉴의 Create에서 Create Automated Build를 누르십시오.


  • Link Accounts 버튼을 누르고 Link Github 버튼을 누릅니다. 그 후 "Public and Private (Recommended)"항목의 "Select"버튼을 누르십시오.


  • 링크 할 수 있으면, 다시 한번, 오른쪽 상단 메뉴의 「Create」의 「Create Automated Build」를 누릅니다. 그런 다음 왼쪽 상단 "Github"링크를 누르십시오.


  • 해당 리포지토리를 선택하고 [Create] 버튼을 누릅니다. Github의 리포지토리 이름에 docker 등을 붙여도 Docker Hub의 공개 이름은 별도로 변경할 수 있습니다.


  • 리포지토리의 Settings 탭에서 Trigger 버튼을 눌러 이미지를 만들 수 있습니다.



  • Google CONTAINER REGISTRY와 Github 간의 협력


  • Container Registry에 액세스하고 트리거 작성을 누르십시오.


  • 소스 선택에서 라디오 박스에서 GitHub를 선택하고 계속 버튼을 누릅니다.


  • ..대시보드
  • 필요한 항목을 입력하고 하단의 "트리거 만들기"버튼을 누르고 빌드 할 태그를 선택하십시오.
    イメージ名の gcr.io/$PROJECT_ID / $REPO_NAME:$COMMIT_SHA  の gcr.io/$PROJECT_ID まではそのままでなければイメージを PUSH できません
    


  • "트리거 만들기"버튼 다음에 "빌드 할 태그 선택"을 누르는 것을 잊지 마십시오.



    【그 2】Python으로 headless-chrome에서의 스크래핑(Google Cloud SQL / Google Storage 구축편) 에 계속
  • 좋은 웹페이지 즐겨찾기