python-scrapy framework (4) ejemplo de uso detallado del archivo settings.py

El archivo settings.py es un archivo que se utiliza en el marco Scrapy para configurar los ajustes relacionados con el rastreo. En Scrapy, podemos personalizar el comportamiento de los rastreadores modificando el archivo settings.py, incluida la configuración de variables globales, la configuración de retrasos de descarga, la configuración de grupos de ua, la configuración de agentes y otros elementos de configuración relacionados con el rastreador. La siguiente es una explicación detallada y un ejemplo del uso del archivo settings.py:

1. Establecer variables globales
En el archivo settings.py, podemos definir algunas variables globales que se pueden usar a lo largo del proceso de rastreo. Por ejemplo, podemos definir una variable USER_AGENT para configurar la información del encabezado User-Agent de la solicitud:

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

2. Configure el retraso de descarga
En el archivo settings.py, puede configurar el retraso de descarga configurando el parámetro DOWNLOAD_DELAY para controlar la velocidad de rastreo. La unidad de DOWNLOAD_DELAY es segundos y se puede establecer en un valor de 1 o mayor. Por ejemplo:

DOWNLOAD_DELAY = 1

3. Configure el grupo de UA
Para evitar que el sitio web identifique rastreadores, podemos configurar un grupo de agentes de usuario y dejar que cada solicitud seleccione aleatoriamente un agente de usuario para enviar. USER_AGENT_POOL se puede configurar en el archivo settings.py de la siguiente manera:

USER_AGENT_POOL = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebK...
]

Luego, selecciona aleatoriamente un User-Agent en Spider para enviar la solicitud:

from scrapy import Spider
from scrapy.utils.project import get_project_settings
from scrapy.utils.httpobj import urlparse_cached

class MySpider(Spider):
    name = 'my_spider'
    
    def __init__(self, name=None, **kwargs):
        self.settings = get_project_settings()
    
    def start_requests(self):
        # ...
        yield scrapy.Request(url, headers={'User-Agent': self.settings['USER_AGENT_POOL'][random.randint(0, len(self.settings['USER_AGENT_POOL'])-1)]})

4. Configure el proxy
Si necesita rastrear un proxy, puede configurar el parámetro PROXIES en el archivo settings.py. Por ejemplo:

PROXIES = [
    'http://proxy1.example.com:8888',
    'http://proxy2.example.com:8888',
    'http://proxy3.example.com:8888',
]

Luego, seleccione aleatoriamente un agente en Spider para enviar la solicitud:

from scrapy import Spider
from scrapy.utils.project import get_project_settings
from scrapy.utils.httpobj import urlparse_cached

class MySpider(Spider):
    name = 'my_spider'
    
    def __init__(self, name=None, **kwargs):
        self.settings = get_project_settings()
    
    def start_requests(self):
        # ...
        yield scrapy.Request(url, meta={'proxy': self.settings['PROXIES'][random.randint(0, len(self.settings['PROXIES'])-1)]})

5. Otros elementos de configuración relacionados con el rastreador
En el archivo settings.py, también puede establecer otros elementos de configuración relacionados con el rastreador, como el nivel de registro, la ruta de guardado, la profundidad de rastreo, etc. Los siguientes son algunos elementos de configuración comunes:

# 日志级别
LOG_LEVEL = 'INFO'

# 爬虫名称
BOT_NAME = 'my_bot'

# 爬取深度限制
DEPTH_LIMIT = 3

# 是否遵循robots.txt
ROBOTSTXT_OBEY = True

# 是否启用缓存
HTTPCACHE_ENABLED = True

# 缓存过期时间
HTTPCACHE_EXPIRATION_SECS = 0

# 缓存存储路径
HTTPCACHE_DIR = 'httpcache'

# 缓存存储方式
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

Estos son solo algunos elementos de configuración comunes en el archivo settings.py, puede agregar o modificar más elementos de configuración según sea necesario. Los siguientes son más elementos de configuración posibles:

6. Habilite y configure extensiones personalizadas
El marco Scrapy permite a los desarrolladores escribir extensiones personalizadas para mejorar la funcionalidad de los rastreadores. Estas extensiones se pueden habilitar y configurar a través del parámetro EXTENSIONS en el archivo settings.py. Por ejemplo, para habilitar y configurar una extensión personalizada MyExtension:

EXTENSIONS = {
    'myextension.MyExtension': 500,
}

7. Configure el número de reintentos
Durante el proceso de rastreo, las solicitudes pueden fallar Puede controlar el número de reintentos automáticos y los códigos de estado de respuesta HTTP configurando los parámetros RETRY_TIMES y RETRY_HTTP_CODES. Por ejemplo, para establecer el número máximo de reintentos en 3 y reintentar solo cuando se encuentren 500 y 502:

RETRY_TIMES = 3
RETRY_HTTP_CODES = [500, 502]

8. Configure la cantidad de solicitudes simultáneas
La eficiencia del rastreo se puede mejorar enviando solicitudes simultáneamente, y la cantidad de solicitudes simultáneas se puede establecer configurando el parámetro CONCURRENT_REQUESTS. Por ejemplo, para configurar el envío de 10 solicitudes al mismo tiempo:

CONCURRENT_REQUESTS = 10

9. Configure el middleware de descarga y el middleware de rastreador
El marco Scrapy proporciona middleware de descarga y middleware de rastreador para operaciones personalizadas durante el procesamiento de solicitudes y respuestas. Estos middlewares se pueden habilitar y configurar configurando los parámetros DOWNLOADER_MIDDLEWARES y SPIDER_MIDDLEWARES. Por ejemplo, para habilitar y configurar el middleware de descarga personalizado MyDownloaderMiddleware y el middleware de rastreador MySpiderMiddleware:

DOWNLOADER_MIDDLEWARES = {
    'myproject.middlewares.MyDownloaderMiddleware': 543,
}
SPIDER_MIDDLEWARES = {
    'myproject.middlewares.MySpiderMiddleware': 543,
}

10. Configurar la información del encabezado de la solicitud
Puede configurar la información del encabezado de la solicitud predeterminada configurando el parámetro DEFAULT_REQUEST_HEADERS. Por ejemplo, configure Referer y Cookie:

DEFAULT_REQUEST_HEADERS = {
    'Referer': 'http://www.example.com',
    'Cookie': 'session_id=xxxxx',
}

11. Configurar si habilitar la redirección
Puede controlar si habilitar la redirección de solicitudes configurando el parámetro REDIRECT_ENABLED. Por ejemplo, para deshabilitar la redirección:

REDIRECT_ENABLED = False

12. Configure el filtro de deduplicación
El marco Scrapy tiene un filtro de deduplicación incorporado para filtrar las URL que se han rastreado. El filtro de deduplicación utilizado se puede seleccionar configurando el parámetro DUPEFILTER_CLASS. Por ejemplo, usando un filtro de deduplicación basado en Redis:

DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'

Estos son solo algunos de los elementos de configuración posibles en el archivo settings.py. De acuerdo con las necesidades reales, puede personalizar el archivo settings.py de acuerdo con varias funciones proporcionadas por el marco Scrapy para satisfacer las necesidades de su rastreador.

Supongo que te gusta

Origin blog.csdn.net/naer_chongya/article/details/131519402
Recomendado
Clasificación