YoonWould!!

[크롤링] 스크래피 프로젝트 생성 본문

<인턴생활>/[python 예제]

[크롤링] 스크래피 프로젝트 생성

Hading 2019. 4. 24. 18:12
728x90
이번 시간에는 스크래피를 설치하고, 프로젝트를 생성하고, 크롤링의 핵심이 되는 아이템 설정하기까지 살펴보겠습니다.

1. 스크래피 설치

  • set swap

    # swap을 첨부하는 이유는 나중에 xml을 설치했을 때 메모리 공간 확보를 위해서 입니다.
    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    echo "/swapfile swap swap sw 0 0" >> /etc/fstab
    echo "vm.swappiness = 10" >>/etc/sysctl.conf
    echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
  • Install Scrapy

    sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
    yum update -y
    yum install python-pip -y
    yum install python-devel -y
    yum install gcc gcc-devel -y
    yum install libxml2 libxml2-devel -y
    yum install libxslt libxslt-devel -y
    yum install openssl openssl-devel -y
    yum install libffi libffi-devel -y
    CFLAGS="-O0" pip install lxml
    pip install scrapy
  • Check Scrapy

    scrapy -v

2. 스크래피 프로젝트 생성

scrapy startproject <프로젝트 이름>

tree <프로젝트 이름>

3. 아이템 설정하기

items.py 파일을 확인합니다.

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class HanbitMediaItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()

    # 책 이름
    book_title = scrapy.Field()

    # 저자 이름
    book_author = scrapy.Field()

    # 번역자 이름
    book_translator = scrapy.Field()

    # 출간일
    book_pub_date = scrapy.Field()

    # ISBN
    book_isbn = scrapy.Field()
    pass

한빛미디어 홈페이지를 기준으로 책, 저자, 번역자, 출간일, ISBN 에 대해서 아이템을 선정한 후 아이템을 설정해줍니다.

4. 스파이더 만들기

수집할 정보를 결정해 아이템으로 설정했으니 실제 정보를 수집해야 합니다. 이제 사이트를 크롤링할 스파이더를 만들 차례입니다.

스크래피에서 스파이더를 생성해주는 명령어는 genspider입니다.

# genspider 명령의 각종 옵션과 사용 방법
scrapy genspider

# -t 옵션은 크롤러의 템플릿을 결정할 때 사용
# 추가 부가 옵션 
# basic : domain에서 설정한 페이지만 크롤링
# crawl : 설정한 규칙에 맞는 링크들을 재귀적으로 탐색
# xmlfeed : xml 피드를 크롤링
# csvfeed : xmlfeed 크롤러와 비교했을 때 각 행을 크롤링한다는 차이가 있음
scrapy genspider -t crawl book_crawl hanbit.co.kr

스파이더 파일은 spiders 디렉터리에 생성됩니다.
book_crawl.py 확인

728x90