요구 사항 : 높은 품질의 사진 석사 크롤링 자료
A. 데이터 분석 (화상 주소)
이미지 SRC을 분석하여 XPath는 속성 값.
만 파이프 라인에 제출 IMG의 SRC 구문 분석의 속성 값에 필요 파이프 라인은 사진을 찍어 요청 SRC 사진에서 수행됩니다
거미 파일
클래스 ImgSpider (scrapy.Spider) 이름 = " IMG ' # allowed_domains ='www.xxx.com '] start_urls = ' http://sc.chinaz.com/tupian/ ' ] DEF 파싱 (자동 응답) : src_list = response.xpath ( ' // DIV [@ 언급 된 ID = "컨테이너"위] / DIV ' ) #의 인쇄 (src_list) 에 대한 src_item 에 src_list : #의 이미지 게으른로드 (브라우저가 사진을 슬라이드 할 때 SRC 속성 SRC2된다 속성) # Scrapy하지 픽처, 이용 특성 SRC2 (의사 특성)에 슬라이드 (src_content src_item.xpath = './div/a/img/@src2 ' ) .extract_first () 인쇄 (src_content) 항목 = ImgsproItem () 항목 [ ' SRC ' = src_content 수율 아이템
파이프 파일에 파이프의 사용자 정의 클래스에 따라 II. ImagesPipeline
3 - 구현 방법의 상위 클래스
-get_media_requests
-file_path
-item_completed
파이프 라인 파일 :
가져 오기 scrapy 에서 scrapy.pipelines.images 가져 오기 ImagesPipeline의 클래스 ImgsproPipeline (객체) : 항목 = 없음 DEF의 process_item는 (자체는, 항목, 거미) : 반환 항목 #의 파일 다운로드 파이프 클래스 ImagesPipeline, 다운로드 프로세스는 모두 비동기 및 멀티 스레드 지원 클래스 ImgPipeLine을 ( ImagesPipeline) : # 사진 요청 작업에있는 항목의 DEF의 get_media_requests (자체, 항목, 정보) : 수율 scrapy.Request (항목 [ ' SRC에 ' ]) #의 사용자 정의 사진 이름 DEF FILE_PATH (자체, 요청, 응답 = 없음, 정보 = 없음) imgName = request.url.split ( ' / ' ) - 1. ] 돌아 imgName # DEF가 item_completed (자체, 항목, 정보 결과) : 반환 항목 #은 다음 시간에 파이프가 실행되는
III. 구성 파일 디렉토리에 저장의 지정한 사진
'. / IMG'IMAGES_STORE =
프로필 :
# USER_AGENT = '람보 (+ HTTP : //www.yourdomain.com)' USER_AGENT = ' 모질라 / 5.0 (매킨토시, 인텔 맥 OS는 X-10_12_0) AppleWebKit / 537.36 (게코 같은 KHTML) 크롬 / 68.0.3440.106 사파리 / 537.36 ' #는 캐리어 요청의 신원 위장 # 순종에 robots.txt가 규칙 # ROBOTSTXT_OBEY = TRUE ROBOTSTXT_OBEY = 거짓 # 로봇 프로토콜에 무시할 또는 비 준수 #을 로그 정보의 특정 유형을 보여 , LOG_LEVEL를, = ' ERROR ' #이 의 마지막 사진을 저장할 디렉토리를 나타내는 IMAGES_STORE를 = ' ./imgs ' # 구성 최대 동시가 Scrapy에 의해 수행 (듯이) 요구합니다 (기본값 : 16) #CONCURRENT_REQUESTS = 32 # 구성 항목 파이프 라인에 #이 https://doc.scrapy.org/en/latest/topics/item-pipeline.html 참조 ITEM_PIPELINES = { ' imgsPro.pipelines.ImgsproPipeline ' 300 , ' imgsPro.pipelines.ImgPipeLine ' : 200 , }