HappyCoding/happy python

scrapy 학습

scrapy

  • spiders : 크롤링 로직이 들어 있는 디렉토리
  • items.py : 대상에 대한 정보 등을 정의
  • pipelines.py : 저장된 정보를 가지고 크롤링한 이후의 처리 작업
  • scrapy.cfg : 전체 프로젝트 배포 시의 설정, 로그 변경 가능
  • settings.py : scrapy 프로젝트에 대한 설정

scrapy의 동작

  • items 정의

  • 스타트 url 지정(start_requests, start_urls, callback 함수 지정(parse())

    • start_url : list file, string list
    • start_requests : 특정한 url에 대해서 callback 함수 지정 가능
  • callback함수 정의

    • selector(xpath, css)를 이용하여 데이터를 선택
  • items.py에 데이터 넣는다.

  • Pipeline을 이용하여 데이터를 필터링 하거나 데이터베이스에 저장

Spiders

  • 크롤러의 이름 지정

    • name
    • 크롤러 시작 scrapy crawl (Spider name)
      ex) scrapy crawl quotes
  • 스타트 URL 지정

    • start_urls
      • 시작 주소를 리스트 형태로 추가 가능
    • start_request
      • 콜백함수를 지정 할 수 있음
      • 사이트에 로그인을 할 때 사용
  • 파서 정의

    • def parse(self, response):
  • 여러개 지정해서 순차적으로 돌려도 되고, 필요한 것만 돌려도 된다.

Selector

  • HTML 문서에 특정 노드를 선택
    • css vs xpath selector
>>> response.xpath('//title/text()')
>>> response.css('title::text')`

Pipeline

  • 데이터를 크롤링 한 이후에 특정 행동을 수행

    • 데이터의 유효성 검사
    • 중복 체크
    • 데이터베이스에 아이템 저장
    • 필터링
  • settings.py

    • 파이프 클래스 및 순서를 지정
ITEM_PIPELINES = {
   'oneq.pipelines.TestPipeline': 300,
}

Logging

  • Settings.py

    • LOG_FILE = ‘logfile.log’
    • LOG_LEVEL = logging.DEBUG
  • Log Level

logging.CRITICAL - for critical errors (highest severity)
logging.ERROR - for regular errors
logging.WARNING - for warning messages
logging.INFO - for informational messages
logging.DEBUG - for debugging messages (lowest severity)

'HappyCoding > happy python' 카테고리의 다른 글

파이썬 라이브러리  (0) 2022.04.16
파이썬  (0) 2022.04.16
격자판 palindrome 구하기 하는데, 메모리 변하는 거 그리면서 놀기  (0) 2022.03.11
교보문고. readITzine  (0) 2021.11.24
python datetime모듈  (0) 2021.11.15