Scrapy Cloud로 덮어쓴 결과물을 S3에 업로드

4902 단어 ScrapyPython

개시하다


이전에는 학습목적을 위해 AWS lambda + API Gateway로 우편번호 검색 API 만들기의 우편번호 데이터를 Scrapy에 도장해 S3에 올렸다.
이번에는 Scrapy Cloud에 프로젝트 설계를 하고 정기 일정을 집행하기 전에 가장 적합한 요점을 적겠습니다.Scrapy Cloud에 대해서는 다음 URL을 참조하십시오.
  • Scrapy+Scrapy Cloud 전송 편안한 파이톤 자유형 + 스크레이퍼 연마반 - Gunsey 데이터 분석 블로그
  • 파이썬 슬립-스크랩 입문 첫걸음-큐타
  • 전체 워크플로우


    전체 워크플로우는 다음 그림과 같습니다.

    scrapinghub 디버깅을 하기 전에


    창설scrapy된 프로젝트부터 scrapinghub까지 디버깅을 진행하는 절차는 다음과 같다.
  • scrapy 프로젝트 만들기
  • $ scrapy startproject {your project}
  • 로컬 구현
  • 로컬 덮어쓰기 시도
  • $ scrapy runspider {spider_file.py}

  • 설계 대상scrapinghub
  • $ shub deploy
  • scrapinghub에서 임무를 수행할 때 반한 일

    scrapinghub 디버깅을 하기 전에는 순조롭지만 scrapinghub 임무를 수행할 때 몇 가지 헷갈렸다.

    두 시스템 지원


    AWS의 조작은 boto이지만 Scrapy Cloud에 미리 설치된 것은 boto(v2)이므로 주의해야 한다.
  • Supported libraries on Scrapy Cloud / Knowledge Base Forum / Scrapinghub
  • boto3 추가 설치(2016-19 업데이트)

    scrapinghub.yml에서 지정하면requirements_file 필요한 프로그램 라이브러리를 설치할 수 있기 때문에boto3을 사용할 수 있습니다.
  • Scrapy Cloud — Scrapinghub documentation Dependencies and External Libraries
  • 디버그 시 requirements_file 정상적으로 처리되면 Code & Deploysrequirements 에서 추가로 설치된 프로그램 라이브러리를 확인할 수 있습니다.

    AWS 인증 정보를 가져오는 방법


    AWS 인증 정보는 Spider Settings->Spider settigns에 다음과 같은 설정 값을 등록합니다.

    코드는 다음과 같이 접근합니다.
    from scrapy.conf import settings
    
    s3 = boto.connect_s3(settings['AWS_ACCESS_KEY_ID'], settings['AWS_SECRET_ACCESS_KEY'])
    
  • https://doc.scrapy.org/en/latest/topics/settings.html#built-in-settings-reference
  • 로컬 확인 시 settings.py에 설정 값을 기술합니다.
    단, ~/.aws/credentials에 인증 정보가 존재하는 경우 설정치를 기술할 필요가 없다.
    settings.py
    AWS_ACCESS_KEY_ID = 'xxxxxx'
    AWS_SECRET_ACCESS_KEY = 'xxxxxx'
    

    과제.

  • S3에 파일을 올리는 데 너무 느려서 커튼에 20분 정도 걸렸어요.
  • 공부 목적이니까 신경 안 써도 되지만 개선하고 싶어
  • 우편번호 데이터는 매월 한 번 업데이트됩니다
  • 우편번호 데이터가 업데이트되었을 때 AWS Lambda측의 API도 최신 데이터를 자동으로 참고하기를 희망합니다
  • 현재 우편번호 데이터의 업데이트 날짜를 버전 정보로 하고 단계 변수를 통해 관리
  • S3에 업로드가 완료되면 레벨 변수를 업데이트하고 싶습니다
  • 끝말


    시작할 때는 API뿐만 아니라 Scrapy 프로젝트AWS Lambda도 시작해야 한다.
    그러나 소스 코드도 라이브러리에 포함시켜 ZIP 파일로 압축해 업로드해야 했는데, 결과적으로 잘 작동하지 않자 솔직하게Scrapy Cloud 디버깅을 시도했다.
    포터클로러 Advent Calendar 2016도 초대를 받았기 때문에 거기서도 Scrapy Cloud로 어떤bot을 만들어서 기사를 만들고 싶어요.
    그럼 안녕히 계세요.

    좋은 웹페이지 즐겨찾기