크롤링 도구를 선택할 때, 사용하기 편하고 기능을 많이 제공하는걸 사용하고 싶었다.
그러던 중, Scrapy에서 많은 기능을 제공한다고해서 사용해보기로 마음먹었다. 

# 아까 가상환경을 통해 만든 환경으로 접속 
$ workon test

#프로젝트를 만들어준다. 
$ (test) root@447fe7338239:~/.virtualenvs/test# scrapy startproject tutorial

# 위와같이 프로젝트를 만들면, 자동으로 파일들이 생긴다. 좀더 편하게 개발할려면 pycharm같은 도구를 설치하는 것을 추천!

먼저 items.py 에 가져올 아이템을 정의한다.
여기선 title, link, desc을 가져오기로 정의
import scrapy

class DmozItem(scrapy.Item):
   title = scrapy.Field()
   link = scrapy.Field()
   desc = scrapy.Field()


이제 파싱을 해야되는데, 실제 크롤링하고 싶은 사이트와 비교하면서 하면 편하다.  ( 다들 아시겠지만 크롬에서 개발자 도구를 가면 해당 Elements들을 확인가능하다 ) 


위 Elements에 <div class= "title-and-desc”> 인 element을 긁어와서 title, link, desc에 파싱해줄거다.
위 Elements들과 아래 코드들을 비교하면, 금방 익숙해질것이다. 

이제 정보을 수집할 spider을 만들어 준다. spiders directory안에 아래와 같이 만들어주었다.
dmoz_spider.py
import scrapy
from tutorial.items import DmozItem

class DmozSpider(scrapy.Spider):
   name = "dmoz"
   allowed_domains = ["dmoz.org"]
   start_urls = [
   ]

   def parse(self, response):
       for sel in response.xpath('//*[@class="title-and-desc"]'):
           title = sel.xpath('a/div[@class="site-title"]/text()').extract()
           link = sel.xpath('a/@href').extract()
           desc = sel.xpath('div[@class="site-descr "]/text()').extract()

           item = DmozItem()
           item['title'] = title
           item['link'] = link
           item['desc' = desc
           yield item

# yield는 generator다 아이템이 생성될때마다 리스트형태로 쌓이게 된다. 
( stack형태로 쌓이게 됌 ) 

실행
$ scrapy crawl dmoz


json형태로 저장
scrapy crawl dmoz -o items.json


이것으로 간단하게 크롤링을 해보았다. 
더 많은 정보는 공식사이트에 가면 자세히 나와 있다. scrapy는 필터 등 다양한 기능을 제공하니, 적은 비용으로 크롤링 서비스를 구축하고 싶으면 한번 시도해봤음한다.





'apps > crawling' 카테고리의 다른 글

scrapy를 통해 크롤링 해보기 - 설치  (0) 2018.09.13
scrapy설치 ( ubuntu에서 진행 ) 
python가상환경을 통해 만들어주었다. 
이런식으로 안 해도 되지만, 프로젝트별로 별도로 환경을 구축하면 라이브러리도 안 꼬이고 편하다.

# 먼저 앱 업데이트를 먼저 해준다.
$ apt-get update 
# gcc나 make등 개발하기 위한 기본 패키지
$ apt-get install build-essential

# python을 설치 하고, pip도 설치해준다.
$ apt-get install python
# 버전 확인
$ python -V
# python package관리를 위해 python-pip설치
$ apt-get install python-pip 

# 파이썬 가상환경 구축 ( 가상환경을 사용 안 해도 되지만, library가 꼬일 가능성이 있기에 가상환경을 구축하였다 ) 
#virtualenvwrapper :  virtualenv을 사용하기 쉽게 제공
$ pip install virtualenv virtualenvwrapper

# vim 이없어서 설치해줌 .. 
$ apt-get install vim

# 환경변수에 넣어준다.
$  vi .bashrc
# 맨 아래 두줄 추가
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

# 바로 적용 
$ source .bashrc

# test라는 가상환경 패키지생성
$ mkvirtualenv test

(test) root@447fe7338239:~#
나갈땐 
$ deactivate

들갈 땐 
$ workon test

# 설치되는 위치 
$  cd .virtualenvs/


########## scrapy설치
$ apt-get install libffi-dev libssl-dev
$ pip install Scrapy




'apps > crawling' 카테고리의 다른 글

scrapy을 사용하여 크롤링 - 실전  (0) 2018.09.13

+ Recent posts