Scrapy casi arrastrándose utilizando una imagen conocida

settings.py

# - * - coding: UTF-8 - * - 

# ajustes Scrapy para zhihutupian proyecto 
# 
# Para simplificar, este archivo contiene sólo los parámetros considerados importantes o 
# de uso común. Puede encontrar más ajustes de consulta de la documentación: 
# 
#      https://doc.scrapy.org/en/latest/topics/settings.html 
#      https://doc.scrapy.org/en/latest/topics/downloader-middleware .html 
#      https://doc.scrapy.org/en/latest/topics/spider-middleware.html 

BOT_NAME = ' zhihutupian ' 

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


# arrastre de forma responsable mediante la identificación de sí mismo (y su sitio web) en el agente de usuario 
# USER_AGENT = 'zhihutupian (+ http: //www.yourdomain.com)' 
USER_AGENT = " Mozilla / 5.0 (Windows NT 10,0; Win64; x64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 80.0.3987.149 Safari / 537.36 " 
# Obey robots.txt reglas 
ROBOTSTXT_OBEY = False
 #LOG_LEVEL = "error" 

IMAGES_STORE = ' ./imgsLib ' #自动创建文件夹

# Configurar máximos solicitudes simultáneas realizadas por Scrapy (por defecto: 16) 
# CONCURRENT_REQUESTS = 32 

# configurar un retardo para las solicitudes de la misma página web (por defecto: 0) 
# Ver https://doc.scrapy.org/en/latest/topics/settings.html#download-delay 
# Véase también la configuración del acelerador automático y documentos 
# DOWNLOAD_DELAY = 3 
# El ajuste de descarga retraso honrará solamente uno de: 
# CONCURRENT_REQUESTS_PER_DOMAIN = 16 
# CONCURRENT_REQUESTS_PER_IP = 16 

# Desactivar cookies (habilitado por defecto) 
# COOKIES_ENABLED = False 

# Desactivar consola Telnet (habilitado por defecto) 
# TELNETCONSOLE_ENABLED = False 

# Anular las cabeceras de petición por defecto:
# DEFAULT_REQUEST_HEADERS = { 
#    'Aceptar': 'text / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0,8', 
#    'Accept-Language': 'en', 
# } 

# activar o desactivar middlewares araña 
# Ver https://doc.scrapy.org/en/latest/topics/spider-middleware.html 
# SPIDER_MIDDLEWARES = { 
#     'zhihutupian.middlewares.ZhihutupianSpiderMiddleware': 543, 
# } 

# Habilitar o deshabilitar descargador middlewares 
# Ver https://doc.scrapy.org/en/latest/topics/downloader-middleware.html 
# DOWNLOADER_MIDDLEWARES = { 
#    'zhihutupian.middlewares.ZhihutupianDownloaderMiddleware': 543, 
# } 

# Activar o desactivar las extensiones 
# Ver https://doc.scrapy.org/en/latest/topics/extensions.html 
# EXTENSIONES = { 
#     'scrapy.extensions.telnet. TelnetConsole ': Ninguno, 
# } 

# Configurar artículo tuberías 
# Ver https://doc.scrapy.org/en/latest/topics/item-pipeline.html 
ITEM_PIPELINES = {
    ' zhihutupian.pipelines.ImgproPipeline ' : 300 , 
} 

# Habilitar y configurar la extensión de empuje automático (desactivado por defecto) 
# Ver https://doc.scrapy.org/en/latest/topics/autothrottle.html 
# AUTOTHROTTLE_ENABLED = True
# El retardo de descarga inicial 
# AUTOTHROTTLE_START_DELAY = 5 
# La demora máxima de descarga que se encuentra en caso de altas latencias 
# AUTOTHROTTLE_MAX_DELAY = 60 
# El número medio de solicitudes Scrapy debería enviar en paralelo a 
# cada servidor remoto 
# AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 
# Habilitar mostrando estrangulación estadísticas para cada respuesta recibida: 
# AUTOTHROTTLE_DEBUG = False 

# activar y configurar el almacenamiento en caché HTTP (desactivado por defecto) 
#Ver 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'

 

pipelines.py

# - * - coding: UTF-8 - * - 

# Defina sus tuberías artículo aquí 
# 
# no se olvide de añadir su canalización a las ITEM_PIPELINES establecer 
# Ver: https://doc.scrapy.org/en/latest/topics /item-pipeline.html 


de scrapy.pipelines.images importación ImagesPipeline
 importación scrapy
 clase : ImgproPipeline (ImagesPipeline)
     # ImgproPipeline 
    def get_media_requests (auto, artículo, información): #注意此处使用的是get_media_requests,注意末尾的s 
        img_src = item [ ' img_src ' ]
         impresión (img_src)
         rendimientoscrapy.Request (url = img_src, meta = { ' elemento ' : item}) 

    def ruta_archivo (auto, petición, respuesta = Ninguno, info = None): 
        img_name = request.META [ ' tema ' ] [ ' img_name ' ]
         
        retorno img_name 

    def item_completed (auto, petición, artículo, información):
         retorno elemento

items.py

# - * - coding: UTF-8 - * - 

# Definir aquí los modelos para sus artículos raspadas 
# 
# Véase la documentación en: 
# https://doc.scrapy.org/en/latest/topics/items.html 

importación scrapy 


clase ZhihutupianItem (scrapy.Item): 

    # definir los campos para su artículo aquí como: 
    img_name = scrapy.Field () 
    img_src = scrapy.Field ()
    

zhihu.py

# - * - Codificación: UTF-8 - * -. 
Importación Scrapy
 de zhihutupian.items importación ZhihutupianItem 

clase ZhihuSpider (scrapy.Spider): 
    Nombre = ' Zhihu ' 
    # allowed_domains = [ 'www.zhihu.com'] 
    start_urls = [ ' HTTPS : //www.zhihu.com/question/xxxxxx ' ] 
    i = 0
     DEF el análisis sintáctico (Self, la respuesta): 
        div_list = response.xpath ( " // Figura " ) a # resolver todas las imágenes donde la etiqueta
         para img_src en div_list:

            img_name = str (self.i) + ' .jpg ' 
            src_div = img_src.xpath ( " ./img/@data-original " ) .extract_first ()   
             # de impresión (src_div) 
            item = ZhihutupianItem () 
            elemento [ ' img_name ' ] = img_name 
            elemento [ ' img_src ' ] = src_div 
            # impresión (elemento [ ' img_name ' ]) 
            # de impresión (elemento [ ' img_src ']) 
            Self.i + = 1
             rendimiento elemento

 

imddlewares.py sin hacer modificaciones  

Nota: Con esta

 

Supongo que te gusta

Origin www.cnblogs.com/cuirenlao/p/12534273.html
Recomendado
Clasificación