반응형

Spider는 웹 사이트를 통해 링크를 따라 이동하고 페이지에서 정보를 추출하는 방법을 정의하는 클래스입니다.

default spirder는 아래와 같습니다.

class scrape.spiders.Spider 에 위치하며 각각의 부분과 설명들을 밑에 첨부합니다.

name 

 spider의 이름 

allowed_domains

 spider가 크롤링할 도메인들의 목록 

start_urls 

URL의 목록이고 어디서부터 크롤링할건지, 나중 크롤링을 위한 뿌리가 된다. 

custom_settings 

spider가 동작할때 project wide configuration으로 오버라이드된다.

crawler 

이 속성은 스파이더 인스턴스가 바인딩 된 크롤러 객체에 연결되는 속성입니다. 

setting

spider의 동작을 위한 세팅들 

logger 

Python logger가 log 메세지를 보내기위해 사용됩니다. 

from_crawler

(crawler,*args,**kwargs)

spider를 만들 메소드이며 파라미터별 

- crawler => 어떤 spider객체가 바인딩 될 것인지. 

- args(list) => method _init_()에 전달된 인자들입니다.

 start_requests()

어떤 특정 URL도 명시되지않았고 스크래핑을 위해 스파이더가 열렸을 경우 scrapy는 start_requests()method를 호출합니다. 

 make_requests_from_url(url)

url을 requests로 콘버트할때 사용됨


parse(response)

response를 처리하고 처리된 데이타를 리턴하고 다음 url을 따라갑니다. 

log(message[,level,component])

 spider logger를 통해 log msg를 보내는 메소드 

closed(reason) 

 spider가 종료될 떄 호출됩니다. 


Spider Arguments

스파이더 인수는 시작 URL을 지정하는 데 사용되며 다음과 같이 -a 옵션과 함께 크롤링 명령을 사용하여 전달됩니다.

scrape crawl first_scrapy -a group = accessories

위 코드는 스파이더가 어떻게 인자를 받는지 보여줍니다.

Generic Spider

Generic Spider를 사용하여 spider를 sub class로 분류할 수 있습니다.

그리고 그들의 목적은 특정 규칙에 기반한 웹사이트의 모든 링크를 타는게 목적입니다.

다음 스파이더에서 사용되는 예제의 경우 다음 필드가있는 프로젝트가 있다고 가정 해 봅시다.




반응형
by 발전소장 에르 :) 2017. 10. 17. 14:59
반응형

Scrapy 명령 도구는 다양한 인수 옵션 그룹이있는 다양한 객체에 대한 명령이 포함되어 있고 주로 'Scrapy tool'이라고도하는 Scrapy 제어하는 사용됩니다.


========================

scrapy.cfg                - Deploy the configuration file

project_name/             - Name of the project

   _init_.py

   items.py               - It is project's items file

   pipelines.py           - It is project's pipelines file

   settings.py            - It is project's settings file

   spiders                - It is the spiders directory

      _init_.py

      spider_name.py

      . . .

============================  


위와 같은 구조를 가지고 있습니다.

scrapy.cfg 파일이 프로젝트 이름과 프로젝트 세팅을 담고있는 프로젝트 root 디렉토리입니다.


예를 들자면,


[settings] 

default = [name of the project].settings  


[deploy] 

#url = http://localhost:6800/ 

project = [name of the project] 

==================================


이렇게 생겼습니다.


Scrapy Tool 사용법


scrapy tool 밑에 보이는 커맨드와 사용법을 제공하고있습니다.


=============================================================

Scrapy X.Y  - no active project 

Usage: 

   scrapy  [options] [arguments] 

Available commands: 

   crawl      It puts spider (handle the URL) to work for crawling data 

   fetch      It fetches the response from the given URL

=============================================================


프로젝트 생성


scrapy startproject project_name으로 간단히 프로젝트를 생성할 있습니다.


앞으로 헷갈리지않도록 scrapy  전용 폴더를 만들어줍시다.

그리고는

scrape start project project_name 명령어를 통해 

본견적으로 시작해봅시다.

친절하게 아래에 명령어를 통해 스파이더를 시작할 수 있음! 이라고 해주네요

cd project_name

scrape gen spider example example.com

저는  logan이라고 이름을 지었습니다.

tree해보시면 전반적 구조가 보이실거에요.


중간에 궁금하신게 있으시다면 

scrape -h 명령어를 통해 확인가능합니다.


반응형
by 발전소장 에르 :) 2017. 10. 17. 12:16
반응형

겁나 빠른기로 소문난 Scrapy 파이썬으로 작성된 오픈-소스 크롤링 프레임워크입니다.

XPath 기반한 셀렉터의 도움으로 비롯해 웹페이지에서 데이터를 추출하기위해 주로 사용됩니다.


BSD 따라 2008626일에 처음 릴리즈되었으며, 2015 6월에 이정표인 1.0 버전이 릴리즈 되었습니다.


Scrapy 사용하는가?

  • 스케일이 크롤링 프로젝트를 쉽게 빌드할 있습니다.
  • “Selector”라고 불리는 built-in 메카니즘을 가지고있으며 웹사이트에서 데이터를 추출하는데 중요한 역할을 합니다.
  • 비동기로 리퀘스트를 처리하고 빠릅니다!
  • 오토-쓰로틀링 메카니즘을 사용하여 크롤링 속도를 자동으로 조율합니다.
  • 개발자 접근성을 보증합니다.!


Scrapy 특징

  • 크롤링 프레임워크로서 오픈소스임과 동시에 무료입니다!
  • JSON, CSV, XML 등의 포맷ㅇ로 feed export 생성해줍니다.
  • XPath 혹은 CSS 표현식을 사용하여 소스에서 데이터를 선택/추출하는 기능이 내장되어(built-in)있습니다.
  • 웹페이지로 데이터를 자동으로 추출하는크롤러 베이스로 되어있습니다.


Scarpy 강점

  • 쉡게 확장할수있고 빠르고 강력합니다.
  • Cross-platform application framework 입니다.(WINDOW, LINUX, MAC OS, BSD …)
  • Scrapy Request 비동기적으로 스케쥴되고 처리됩니다.
  • Scrapy 내장된 서비스 Scrapyd JSON 웹서비스를 이용하여 스파이더를 제어할 있고 프로젝트에 업로드할 있게 해줍니다.
  • 어떤 웹사이트가 raw data 접근을 지원하는 API 없음에도 활용할 있습니다.


Scrapy 단점

  • 파이썬 2.7+만을 지원합니다.
  • OS마다 설치법이 다릅니다.


반응형
by 발전소장 에르 :) 2017. 10. 17. 10:47
| 1 |