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'