본문 바로가기

프로그래밍/python

파이썬 웹 크롤러 scrapy 스크래피 기본 정리

반응형

파이썬 웹 크롤러 scrapy 정리


Scrapy 란?

스크래피는 웹사이트를 크롤링하고 구조데이터를 추출해주는 프레임워크입니다. 

 

 

Command line tool

커맨드라인에서 scrapy 명령어를 이용하여 실행하는 리스트입니다.

 

-프로젝트 만들기

scrapy startproject myproject [project_dir]

project_dir 디렉토리 안에 scrapy 프로젝트를 만듭니다. 

 

 

-크롤링 하기

scrapy crawl myspider

spider를 이용하여 크롤링을 시작합니다. 

 

 


Scrapy 프레임워크 구조

scrapy.cfg
myproject/
    __init__.py
    items.py
    middlewares.py
    pipelines.py
    settings.py
    spiders/
        __init__.py
        spider1.py
        spider2.py
        ...

 


Spiders

스파이더는 어떻게 특정 사이트를 크롤링하고 스크랩할 것인지에 대한 로직을 정의하는 클래스입니다. 또한 그 페이지에서 어떻게 structured data를 추출할 것인지를 정합니다.

 

스파이더는 이러한 싸이클로 스크랩핑을 하게 됩니다.

 

1. 첫번째 URL을  크롤링을 하기 위해 initial requests를 만들고, 그러한 requests 로 부터 response를 받았을 때 실행 할 콜백함 수를 지정합니다.

 

특정 URL인 start_urls 와 콜백함수인 parse 메써드를 위한 request 를 만드는 기본 디폴트 메써드인 start_requests() 를 호출하면서 첫번째 requests를 형성합니다.

 

2.  콜백 함수에서는 response data(page contents)를 파싱하고 item objects(Request, iterable)로 리턴합니다. page contents를 파싱할 때는 Selectors 라는 것을 씁니다.(대신에 BeautifulSoup또는 lxml 그 이외의 것도 사용가능합니다.)

 

3. 마지막으로 스파이더에서 받은 데이터를 db에 저장하게 됩니다.

 

더보기

name

스파이더를 위한 name string 변수입니다. 스파이더 name은 스파이더가 어느곳에 위치해 있는지를 정리해주는 변수이기 때문에 각각의 스파이더의 name은 중복되면 안되는 값이어야 합니다. 

 

 

 

XMLFeedSpider 

class scrapy.spiders.XMLFeedSpider

XMLFeedSpider 는 XML을 파싱하기 위해 디자인 되었습니다. 

 

 

반응형