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