Python 에서 scrapy 는 그림 을 저장 하 는 예제 를 다운로드 합 니 다.

일상적인 파충류 연습 에서 우리 가 기어 오 르 는 데 이 터 는 저장 작업 을 해 야 한다.scrapy 에서 우 리 는 Images Pipeline 이라는 종 류 를 사용 하여 관련 작업 을 할 수 있다.이런 종 류 는 scrapy 가 이미 봉 인 된 것 이 니 우리 가 직접 가 져 와 서 사용 하면 된다.
                                                                   
     Images Pipeline 을 사용 하여 그림 데 이 터 를 다운로드 할 때,우 리 는 그 중의 세 개의 파이프 클래스 방법 을 다시 써 야 한다.         ― get_media_request   그림 주소 요청 입 니 다.
   ― file path   그림 이름 되 돌리 기
   ― item_completed  item 을 되 돌려 다음 실행 할 파이프 클래스 로 되 돌려 줍 니 다.
                                                
        구체 적 인 코드 는 어떤 것 입 니까?우선 pipelines.py 파일 에서 Images Pipeline 류 를 가 져 온 다음 에 상술 한 세 가지 방법 을 다시 써 야 합 니 다.

from scrapy.pipelines.images import ImagesPipeline
import  scrapy
import os
 
 
class ImgsPipLine(ImagesPipeline):
    def get_media_requests(self, item, info):
        yield scrapy.Request(url = item['img_src'],meta={'item':item})
 
 
    #        
    def file_path(self, request, response=None, info=None):
        item = request.meta['item']
        print('########',item)
        filePath = item['img_name']
        return filePath
 
    def item_completed(self, results, item, info):
        return item
        방법 이 정의 되면 settings.py 프로필 에 설정 해 야 합 니 다.하 나 는 그림 이 저 장 된 위 치 를 지정 하 는 IMAGES 입 니 다.STORE='D:\\\ImgPro'다음 에'ImgsPipLine'파 이 프 를 사용 합 니 다.

ITEM_PIPELINES = {
   'imgPro.pipelines.ImgsPipLine': 300,  #300     ,         
}
         설정 이 완료 되면 프로그램 을 실행 하면'D:\\ImgPro'에서 성공 적 으로 저 장 된 그림 을 볼 수 있 습 니 다.

전체 코드 는 다음 과 같 습 니 다:
spider 파일 코드:

# -*- coding: utf-8 -*-
import scrapy
from imgPro.items import ImgproItem
 
 
 
class ImgSpider(scrapy.Spider):
    name = 'img'
    allowed_domains = ['www.521609.com']
    start_urls = ['http://www.521609.com/daxuemeinv/']
 
    def parse(self, response):
        #           
        li_list = response.xpath('//div[@class="index_img list_center"]/ul/li')
        for li in li_list:
            item = ImgproItem()
            item['img_src'] = 'http://www.521609.com/'  + li.xpath('./a[1]/img/@src').extract_first()
            item['img_name'] = li.xpath('./a[1]/img/@alt').extract_first() + '.jpg'
            # print('***********')
            # print(item)
            yield item
items.py 파일

import scrapy
 
 
class ImgproItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    img_src = scrapy.Field()
    img_name = scrapy.Field()
pipelines.py 파일

from scrapy.pipelines.images import ImagesPipeline
import  scrapy
import os
from  imgPro.settings import IMAGES_STORE as IMGS
 
class ImgsPipLine(ImagesPipeline):
    def get_media_requests(self, item, info):
        yield scrapy.Request(url = item['img_src'],meta={'item':item})
 
 
    #        
    def file_path(self, request, response=None, info=None):
        item = request.meta['item']
        print('########',item)
        filePath = item['img_name']
        return filePath
 
    def item_completed(self, results, item, info):
        return item
settings.py 파일

import random
BOT_NAME = 'imgPro'
 
SPIDER_MODULES = ['imgPro.spiders']
NEWSPIDER_MODULE = 'imgPro.spiders'
 
IMAGES_STORE = 'D:\\ImgPro'   #      
LOG_LEVEL = "WARNING"
ROBOTSTXT_OBEY = False
#  user-agent
USER_AGENTS_LIST = [
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
    ]
USER_AGENT = random.choice(USER_AGENTS_LIST)
DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
   # 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
    'User-Agent':USER_AGENT
}
 
#  pipeline  
ITEM_PIPELINES = {
   'imgPro.pipelines.ImgsPipLine': 300,
}
         이상 은 Images Pipeline 을 이용 하여 사진 을 저장 하 는 방법 입 니 다.오늘 갑자기 궁금 한 것 이 생 겼 습 니 다.파충류 가 잘 기어 다 니 는 것 이 정말 콩 밥 을 배 불리 먹 었 습 니까?여러분,대답 해 주세요!더 많은 관련 Python scrapy 다운로드 저장 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기