scrapy 사진 데이터 크롤링

요구 사항 : 높은 품질의 사진 석사 크롤링 자료


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 , 
}

 

추천

출처www.cnblogs.com/xiao-apple36/p/12623211.html