관리 메뉴

나만의공간

Scrapy 가이드 #1 본문

IT/Python

Scrapy 가이드 #1

밥알이 2016. 5. 26. 09:34

1. Scrapy Tutorial

래 문서는 http://doc.scrapy.org/en/latest/intro/tutorial.html에 있는 문서를 참고 하여 작성 하였습니다.

해당 문서는 윈도우 환경 기반으로 작성하였습니다.

Scrapy Tutorial을 진행하기 위한 순서

1) 신규 Scrapy Project를 생성한다.

2) Items에 대한 정의를 한다.

3) Spider를 만들고 원하는 사이트 정보를 Items에 넣는다.

4) Pipeline을 이용하여 Items 정보를 저장 매체에 저장한다.


2. Createing Project

1) 프로젝트를 만들기 전에 폴더를 먼저 생성한다.

(1) 윈도우키 + R을 누른 후 CMD를 입력하고 엔터를 누른다.

(2) 윈도우 Command창이 정상적으로 나온것을 확인한다.

(3) D:드라이브로 이동한다.

(4) D:\mkdir PySource 폴더를 만든다.

(5) D:\ cd PySource로 이동한다.

2) 해당 폴더로 이동하여 아래 명령를 실행한다.

(1) scrapy startproject tutorial

위 명령어를 실행하면 아래 구조와 같은 폴더 및 파일이 자동 생성된다.

tutorial/

    scrapy.cfg            # deploy configuration file 환경설정 파일

    tutorial/             # project's Python module, you'll import your code from here 파이션 모듈 및 코드 작성

        __init__.py

        items.py          # project items file Items 파일

        pipelines.py      # project pipelines file Pipelines 파일

        settings.py       # project settings file setting 파일

        spiders/          # a directory where you'll later put your spiders Spider를 실행할 코드 작성 폴더

            __init__.py

            ...


3. Items 파일 작성

Items 파일은 Scraped된 데이타를 저장 할 수 있는 구조를 가진 파일이다.

파싱을 원하는 Site구조에 맞는 Item 리스트를 작성한다.

import scrapy

class DmozItem(scrapy.Item):

    title = scrapy.Field()

    link = scrapy.Field()

    desc = scrapy.Field()


4. Sprider 파일을 작성한다.

Spider 파일은 가져오고자 하는 정보가 있는 URL에 접근 하여 해당 정보를 Items 파일에 저장하게 된다.

Spider 파일에 정의된 속성은 아래와 같다.

name : spider 정의 명이다. 유일한 이름이어야 하고 다른 Spider에 있는 이름과 동일하면 안된다.

start_urls : crawl를 시작할 URL을 작성한다. N건을 정의 할 수 있다.

allowed_domains : 크롤링을 하고자 하는 도메인 정의

parser() : spider 메소드로서 response된 내용에 대한 다운로드를 한다. start_urls에 있는 위치를 기준으로 한다.

            parser 메소드는 response에 대한 데이타 처리를 담당하는 메소드 이다.

1) Spider Code Sample

import scrapy

class DmozSpider(scrapy.Spider):

    name = "dmoz"

    allowed_domains = ["dmoz.org"]

    start_urls = [

        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",

        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"

    ]

    def parse(self, response):

        filename = response.url.split("/")[-2] + '.html'

        with open(filename, 'wb') as f:

            f.write(response.body)


5. Crawling을 한다.

cmd 창에 아래 명령어를 수행한다.

scrapy crawl dmoz

위 명령어를 수행 하면 아래와 같은 간단한 정보를 보여준다.

해당 폴더에 Books.html과 Resources.html 파일 2개가 생성되어 있으면 정상적으로 수행이 된것이다.


2016-05-26 11:03:21 [scrapy] INFO: Scrapy 1.1.0 started (bot: tutorial)

2016-05-26 11:03:21 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'tutorial.spiders', 'SPIDER_MODULES': ['tutorial.spiders'], 'ROBOTSTXT_OBEY': True, 'BOT_NAME': 'tutorial'}

2016-05-26 11:03:22 [scrapy] INFO: Enabled item pipelines:

2016-05-26 11:03:22 [scrapy] INFO: Spider opened

2016-05-26 11:03:22 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)

2016-05-26 11:03:22 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023

2016-05-26 11:03:22 [scrapy] DEBUG: Crawled (200) <GET http://www.dmoz.org/robots.txt> (referer: None)

2016-05-26 11:03:23 [scrapy] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: None)

2016-05-26 11:03:23 [scrapy] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: None)

2016-05-26 11:03:23 [scrapy] INFO: Closing spider (finished)

2016-05-26 11:03:23 [scrapy] INFO: Spider closed (finished)



'IT > Python' 카테고리의 다른 글

Python 기본편 (설치) #1  (0) 2024.01.08
Scrapy 가이드 #3 (MongoDB 사용하기)  (0) 2016.05.30
Scrapy 가이드 #2  (0) 2016.05.26
Python whl 파일 설치 방법  (0) 2016.05.23
Python을 이용한 웹 크롤링 개발 도구 선택  (0) 2016.05.23
Comments