[경로] 학습 (칠) Scrapy 지인의 롤로의 파이썬 파이썬 크롤러 시스템

 Scrapy 지인

 scrapy 내용 왜 1.0

첫째, 요청 + 셀레늄은 파충류 수요의 90 %를 해결하지만, scrapy는 할 수없는 더 나은 파충류 수요의 99 %를 해결하기 위해 나타날 수 있습니다.

그러나 빠른 파충류를 만들기 위해, 강한

2.0 scrapy은 무엇입니까

Scrapy 응용 프로그램 프레임 워크는 빠르게 잡아 수 있습니다, 우리는 작은 양의 코드를 구현해야 작성된 구조화 된 데이터를 추출, 데이터를 크롤링 웹 사이트입니다

Scrapy는 트위스트 [ 'twistid] 비동기 네트워크 프레임 워크를 사용하여, 우리는 다운로드 속도를 속도를 높일 수 있습니다

3.0 scrapy 과정 :

 

  • 거미 (파충류) : 그것은 다시 스케줄러 (스케줄러)를 입력, 데이터 분석, 데이터 수집 항목 필수 필드를 추출하고, URL을 따르지 엔진의 필요성에 제출되는 모든 응답을 처리

처리 엔진, 데이터 추출, 추출 된 URL 및 엔진에 의해 전송 된 응답. [필기] 필요

  • 엔진 (엔진) : 등등 거미, ItemPipeline, 다운, 중간 스케줄러 통신, 신호, 데이터 전송 및 대한 책임.

사령관 : 다른 모듈에서 데이터 전송 및 신호 작업에 대한 책임. 필기 [안 함]

  • 스케줄러 (스케줄러) : 그것은 엔진에서 보낸 요청 요청을 수락에 대한 책임, 그 엔진이 시간을 필요로 할 때, 팀으로, 특정한 방식으로 배열 된 엔진으로 돌아 구성 할 수 있습니다.

큐 저장 요청, 요청 엔진을 보냈다. 필기 [안 함]

  • 다운 (다운) : 모든 요청을 다운로드에 대한 책임은 Scrapy 엔진 (엔진) 전송 요청하고 획득 한 응답은 Scrapy 엔진 (엔진), 스파이더 처리 할 수있는 엔진을 반환

다운로드 엔진은 나에게 요청을 요청 전송, 엔진에 돌려 보냈다. 필기 [안 함]

  • ItemPipeline (파이프) :이 아이템 획득하고 후 처리 (상세한 분석을 여과, 저장 등) 대신에 스파이더를 처리한다.

이러한 스토리지 요구로 엔진 데이터를 처리 [필기]

  • 다운 미들웨어 (다운로드 미들웨어) : 사용자 정의 구성 요소 다운로드 기능을 확장 할 수 있습니다대로 간주 될 수있다.

확장을 다운로드하는 등의 프록시 설정으로, 사용자 정의 할 수 있습니다. [필기 일반적하지

  • 스파이더 미들웨어 (스파이더 미들웨어) : 사용자가 정의 할 수있는 기능 구성 및 엔진의 확장 동작과 중간 통신 스파이더로 이해 될 수있다 (예컨대 거미 응답을 입력하는 것과, 상기 스파이더 요청 아웃)

당신은 필터에 대한 요청 요청과 요청을 사용자 정의 할 수 있습니다. [필기 일반적하지

 

4.0 어떻게 간단한 응용 프로그램

4.0.1 프로젝트의 scrapy 만들기

scrapy startproject mySpider

4.0.2는 파충류를 생성

scrapy의 genspider의 itcast " itcast.cn "

4.0.3 데이터 추출

  XPath는 또는 CSS 추출물을 사용하여 완벽한 거미,

4.0.4 데이터 저장

  파이프 라인이 저장

 4.0.5 시작

scrapy 기어 itcast

 

간단한 예 5.0

거미

오기 Scrapy의 


클래스 ItcastSpider (scrapy.Spider) 
    이름 = ' itcast '   # 러 이름 
    allowed_domains = ' itcast.cn ' ]   #에 크롤러 범위 
    start_urls = ' http://www.itcast.cn/channel/teacher.shtml ' ] #에 크롤러 시작 페이지, URL이 응답 데이터가 원하는 응답하는 대응 

    DEF 파싱 (자동 응답)은 :   #에게 이 방법은 응답이 어드레스 strat_urls (대응)에 대응하는 해석 
        # 해석 함수 이름을 변경할 수를 특정 
        # RET = response.xpath ( "// DIV의 [에 @ 클래스 = 'tea_con'] // H3 / 텍스트 ()"). () 추출 
        #을선택 객체 () 메소드 extract_first () 첫 추출하는 추출 갖는다 
        #의 인쇄 (RET) 

        # 1 으로 그룹화 
        li_list = response.xpath ( " // DIV의 [의 @ 클래스 = 'tea_con'] // 리 " )
         에 대한 리튬 li_list : 
            아이템 = {} 
            아이템 [ " 이름 " ] = li.xpath ( " .// H3 / 텍스트 () " ). .extract_first () 스트립 ()   #의 스트립 스트립 스페이스 
            아이템 [ " 제목 " = li.xpath ( " .// H4 / 텍스트 () " ) .extract_first ().
            스트립 () 수율항목   # 이 장소를 처리하는 파이프 라인으로 전송 항목이며, 수율은, 메모리 사용량 감소 발전기입니다 
            #을 처리하기 위해 파이프 라인을 열해야하는 최저치를하면서 
            #의 유형, 목록 유형의 수익률만을 요청, BASEITEM, 딕셔너리 또는 없음을 작동하지

파이프 라인

클래스 MyspiderPipeline (개체) :
     DEF (셀프, 항목, 거미) process_item :   #의 process_item 함수 이름을 변경할 수 없습니다, 그 특정입니다 
        # 뭔가를해야만 할 
        항목 [ " 안녕하세요 " ] = [ " 세계 " ]
         #의 인쇄 (항목) 
        반환 항목   # 이전 pipelin이는 null 반환 항목을, 또는이다 있어야 


클래스 : MyspiderPipeline2 (객체)
     DEF process_item (자체는, 항목, 스파이더) :   #의 이 기능의 이름은 변경할 수 없습니다 process_item, 이것은 특정입니다 
        # 뭔가를해야만 할 
        인쇄 ( 항목)
         반환 항목

설정

BOT_NAME이 = ' myspider ' 

SPIDER_MODULES = [ ' myspider.spiders ' ] 
NEWSPIDER_MODULE = ' myspider.spiders ' 

LOG_LEVEL = " 경고 "   # 五个等级,设置一下


#의 크롤링 책임감 사용자 에이전트에 자신 (및 웹 사이트)를 식별하여 
# USER_AGENT = 'myspider (+ HTTP : //www.yourdomain.com)' 

#이 robots.txt에 규칙에 순종 
ROBOTSTXT_OBEY = 진정한 

#이 Scrapy에 의해 수행 최대 동시 요청을 구성합니다 (기본값 : 16) 
# CONCURRENT_REQUESTS = 32

# 같은 웹 사이트에 대한 요청 지연을 구성합니다 (기본값 : 0) 
# 참조 https://doc.scrapy.org/en/latest/topics/settings.html#download-delay 
# 도 참조 autothrottle 설정 및 문서 
# DOWNLOAD_DELAY = 3 
# : 다운로드 지연 설정은 하나의 명예 것입니다 
# CONCURRENT_REQUESTS_PER_DOMAIN = 16 
# CONCURRENT_REQUESTS_PER_IP = 16 개 

# 기본적으로 활성화 비활성화 쿠키 
# COOKIES_ENABLED = 거짓 

# 안 텔넷 콘솔 (기본적으로 활성화) 
# TELNETCONSOLE_ENABLED = 거짓 

# 재정의 기본 요청 헤더 : 
#DEFAULT_REQUEST_HEADERS = { 
#    '동의': 'text / html과, 응용 프로그램 / XHTML + XML, 응용 프로그램 / XML, Q = 0.9, * / *; q를 = 0.8' 
#    '- 언어 수락': 'EN'을, 
# } 

# 사용하거나 사용하지 않도록 거미 미들웨어의 
#은 참조 https://doc.scrapy.org/en/latest/topics/spider-middleware.html 
# SPIDER_MIDDLEWARES = { 
#     'myspider.middlewares.MyspiderSpiderMiddleware': 543, 
# } 

#은 활성화 또는 비활성화 다운 미들웨어의 
#은 참조 https://doc.scrapy.org/en/latest/topics/downloader-middleware.html 
# DOWNLOADER_MIDDLEWARES = { 
#    'myspider.middlewares.MyspiderDownloaderMiddleware': 543, 

# 사용하거나 사용하지 않도록 설정 확장 
#이 보기 https://doc.scrapy.org/en/latest/topics/extensions.html 
# EXTENSIONS = { 
#     'scrapy.extensions.telnet.TelnetConsole' : 없음, 
# } 

#의 구성 항목 파이프 라인 
#은 https://doc.scrapy.org/en/latest/topics/item-pipeline.html 참조 
ITEM_PIPELINES = {
    ' myspider.pipelines.MyspiderPipeline을 ' 300 ,
     ' myspider.pipelines. MyspiderPipeline2 ' : 302 ,
     # 这个地方是路径加middleweares名
    #(300)表示引擎的远近,数据越小,越新处理
} 


# 활성화하고 (기본적으로 비활성화)을 AutoThrottle 확장을 구성 
# 참조 https://doc.scrapy.org/en/latest/topics/autothrottle.html 
# AUTOTHROTTLE_ENABLED = 트루 
# 초기 다운로드 지연 
#의 5 = AUTOTHROTTLE_START_DELAY 
# 최대 다운로드 지연은 높은 레이턴시의 경우에 설정되는 
# 60 AUTOTHROTTLE_MAX_DELAY를 = 
# Scrapy는 병렬로 전송한다 평균 요청 수가 
# 각 원격 서버 
# 개 = 1.0 AUTOTHROTTLE_TARGET_CONCURRENCY을 
#가 사용 수신 된 모든 응답에 대한 통계를 나타내는 스로틀 :
#의 AUTOTHROTTLE_DEBUG = 거짓 

# 활성화 및 구성 HTTP 캐싱 (기본적으로 비활성화) 
#이 보기 https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings 
# HTTPCACHE_ENABLED = TRUE 
# HTTPCACHE_EXPIRATION_SECS = 0 
# HTTPCACHE_DIR = 'HttpCache에' 
# HTTPCACHE_IGNORE_HTTP_CODES = [] 
# HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

 

추천

출처www.cnblogs.com/rollost/p/11128347.html