Rastreo de datos del sitio web oficial de Ele.me
Acabo de configurar el marco Scrapy por la mañana y no podía esperar para hacer una pequeña demostración para probarlo por la tarde. Resulta que scrappy es realmente poderoso. Siento que después de dominarlo por completo, no habrá datos que no pueda escalar, O(∩_∩)O jaja~.
Los siguientes pasos se basan en una instalación y configuración exitosa de scrapy.
1. Crear un nuevo proyecto Scrapy
¿Abrir la interfaz de la consola cmd?
Entrada: scrapy startproject myScrapy
Los siguientes archivos están incluidos en el proyecto creado:
__init__. py: archivo de inicialización del proyecto;?
Items.py: ¿El archivo de destino del proyecto?
Pipelines.py: ¿Archivo de canalizaciones para el proyecto?
¿Archivo de configuración del proyecto?
Spiders/: ¿Un archivo que almacena el código del rastreador?
Araña/__init__. py: el archivo de Word inicial del rastreador.
2. Definir elementos
Items es un contenedor para guardar datos rastreados. Su uso es similar al de un diccionario de Python y proporciona un mecanismo de protección adicional para evitar errores de campos no definidos causados por errores ortográficos. , similar a la relación de mapeo en ORM.
Este es el código predeterminado en items.py:
Importar scrapyclass mySpiderItem(scrapy. items):
#name = scrapy. Fields()
Pase 12345
Modifiquémoslo: (¿Necesito rastrear los datos? Nombre, ocupación y detalles)
Importar scrapyclass MyspiderItem( scrapy. item):
#Este es el campo contenido en los datos que necesitas escalar.
Nombre=cabeza de espina. campos()
título = scrapy. campos()
info = scrapy. Field() pass123456789
3. Crear archivo de rastreo
¿Estás en línea? araña/? ¿Crear un archivo en? demo_spider.py? . ?
Luego, el Bloc de notas abre el archivo y agrega el siguiente código:
Importar scrapy#Referencia myspideritemtemfrommyspider. item en item.py en el directorio myspideritemclass demo _ spider (scrap . spider. ):
# Nombre del rastreador, debe ser único.
name = "Demo"
#Dominio Reptile de Reptile (quiero obtener los datos de Chuanzhi)
Allowed_domains = ["itcast.cn"] # La lista de URL al principio es la dirección del primer lote de solicitudes.
start _ URLs =[" http/channel/teacher . shtml "
] El método #pase es responsable de analizar los datos devueltos y obtener los elementos de datos que deben extraerse. y generar los datos que necesitan procesamiento adicional URL del objeto de solicitud.
Análisis de definiciones (self, respuesta):
#Conjunto de datos recopilados
node _ list = respuesta . Li _ txt ']")
Para nodos en node_list:
Item = MyspiderItem() #. extract() convierte objetos xpath en cadenas Unicode.
nombre = node.xpath("./h3/text()".extract()
título = node.xpath("./h4/text()"). extraer()
info = node.xpath("./p/text()"). extraer()
elemento['nombre'] = nombre[0] p>
Artículo['Title'] = Título[0]
Artículo['info'] = info[0] #rendimiento: pausa el ciclo después de obtener los datos de un artículo y luego entrégalo a la canalización, continúe el ciclo
Proyecto de salida 1234567891011213141516171819202122232425262728
4 Modifique el archivo de configuración
Abra el archivo settings.py y cambie ROBOTSTXT_OBEY a falso. Evite prohibiciones en ciertos sitios web. El rastreador rastrea los datos.
# Obey txt reglas robots txt _ Obey = false 12
Descomentar ITEM_PIPELINES, que define la prioridad de la canalización. Cuanto menor sea el valor, mayor será el nivel
ITEM_PIPELINES = { 'Tencent Pipeline': 300
}123
Este es el archivo de canalización predeterminado:
Importar jsonclass MyspiderPipeline (objeto):
def Process_item (self, project, spider):
Pass?12345
Lo modificamos de la siguiente manera:
Importar jsonclass MyspiderPipeline(object):
def __init__(self):
Self.f = open ("demo.json", "WB") #Este método es obligatorio
def Process_item (self, project, spider) :
content = json.dumps(dict(item), asegurar _ascii = False) ",\n "
self . 8 ")) devolver elemento def colse_spider(self, spider):
self . f . close()1234567891011121314
Agregar método __init__. La primera vez que se ejecuta un evento de canalización, cree el archivo demo.json y ábralo.
Agregue el método colse_spider para cerrar el archivo al final del evento de canalización.
Modifique el método Process_item y guarde los datos del proyecto obtenidos en Demo_Spider en el archivo demo.json.
Inicie la araña
En el directorio mySpider, cree una carpeta de datos para almacenar los archivos de datos rastreados.
Ingrese: mkdir data, luego: cd data/?
¿Usar el comando: scrapy para obtener la demostración?
Puedes ver detalles de la finalización de la ejecución.
Los datos requeridos se proporcionan en el archivo demo.json.
Así es como se realiza un ejemplo sencillo de extracción de datos de un sitio web. Creo que después de una investigación en profundidad, podremos lograr una función de captura de datos muy poderosa.