Una guía para principiantes sobre el rastreo web con Python y Scrapy.

¿Qué es el rastreo web?

El web scraping implica la recopilación de datos disponibles en el sitio web. Esto puede ser realizado manualmente por humanos o por robots. Este es un proceso de extracción de información y datos de un sitio web y convertir la información obtenida en datos estructurados para su posterior análisis. El web scraping también se denomina recopilación web o extracción de datos web.

Se requiere rastreo web

El web scraping ayuda a obtener datos para el análisis de tendencias, rendimiento y seguimiento de precios. Se puede utilizar para el análisis de la opinión del consumidor para obtener información sobre artículos de noticias, agregación de datos de mercado, análisis predictivo y muchos proyectos de procesamiento de lenguaje natural. Se utilizan varias bibliotecas de Python en web scraping, que incluyen:

  • Patrón
  • Scrapy
  • Hermosa sopa
  • Solicitudes, Merchandize, Selenio, etc.

Scrapy es un marco completo de craping web escrito en Python, responsable de descargar HTML para su análisis. Sin embargo, Beautiful Soup es una biblioteca para analizar y extraer datos de HTML.

Pasos involucrados en el web scraping

  1. Carga / descarga de documentos: carga toda la página HTML
  2. Analizar y extraer: interpretar el documento y recopilar información del documento
  3. Conversión: convierte los datos recopilados.

Para descargar , use la biblioteca de solicitudes de Python para descargar la página html. Scrapy tiene su método de solicitud incorporado.

Aunque es necesario estar familiarizado con el lenguaje de marcado de hipertexto (HTML) al analizar documentos. HTML es el lenguaje de marcado estándar que se utiliza para crear páginas web. Consiste en una serie de elementos / nombres de etiquetas que le dicen al navegador cómo mostrar el contenido. Los elementos HTML se componen de

<etiqueta de inicio> Contenido aquí </ etiqueta de fin>

HTML se puede expresar como una estructura de árbol que contiene nombres / nodos de etiquetas, donde hay relaciones entre nodos, incluidos padres, hijos, hermanos, etc.

Después de la descarga, use el selector CSS o el localizador XPATH para extraer datos de la fuente HTML

XPath se define como una ruta XML. Es la gramática o el lenguaje para encontrar cualquier elemento en una página web usando expresiones de ruta XML. XPath se usa para encontrar la posición de cualquier elemento en una página web usando la estructura HTML DOM.

Empezando con el localizador XPATH

Absolute Xpath : Contiene la ruta completa desde el elemento raíz hasta el elemento deseado.

Xpath relativo : esto es más como simplemente comenzar desde una referencia al elemento requerido y comenzar desde una posición específica. Siempre usa rutas relativas para probar elementos

Ejemplo de XPATH con instrucciones

Creé este script HTML para practicar, copiar y guardar como (.html) para usar con la descripción

<html>
     <head><title>Store</title></head>
     <body>
         <musicshop id="music"><p><h2>MUSIC</p></h2>
            <genre><h3><p>Hip-Hop</p></h3>
                <ul>
                    <li>Travis Scott</li>
                    <li>Pop Smoke</li>
                </ul>
            </genre>
            <genre country="korea"><h3><p>K-pop</p></h3>
                <ul>
                    <li>G Dragon</li>
                    <li>Super Junior</li>
                </ul>
            </genre>
        </musicshop>
        <bookstore id='book'><p><h2>BOOKS</p></h2>
            <bookgenre class = "fiction"><p><h3>Fiction</h2></p>
                <ul>
                    <li><booktitle><h5><p>The Beetle</p></h5></booktitle></li>
                    <li><booktitle><h5><p>The Bell Jar</p></h5></booktitle></li>
                    <li><booktitle><h5><p>The Book Thief</p></h5></booktitle></bookgenre></li>
                </ul>
            <bookgenre class="horror"><p><h2>Horror</h2></p>
                <ul>
                    <li><booktitle><h5><p><a href='www.goodreads.com/book/show/3999177-the-bad-seed'>The Bad Seed</a></p></h5></booktitle></li>
                    <li><booktitle><h5><p>House of Leaves</p></h5></booktitle></li>
                    <li><booktitle><h5><p>The Hanting of Hill House</p></h5></booktitle></bookgenre></li>
                </ul>
        </bookstore>
    </body>
</html>
复制

El HTML creado genera una página web en la imagen de abajo

Practique el localizador XPATH y CSS en el enlace del navegador (Chrome)

  1. Presione F12 para abrir Chrome DevTools.
  2. El panel "Elementos" debería estar abierto de forma predeterminada.
  3. Presione Ctrl + F para habilitar la búsqueda DOM en el panel.
  4. Introduzca el selector de XPath o CSS para su evaluación.
  5. Si hay elementos coincidentes, se resaltarán en el DOM.

Personajes :

  • Nombre de nodo: seleccione el nodo con el nombre dado
  • "/" se selecciona del nodo raíz
  • "//": ignora la etiqueta de la generación anterior y comienza desde el nodo actual que coincide con la selección
  • "@" - Seleccione "nodo con atributo dado", usaré XPATH y el documento HTML anterior para

Elige el segundo HipHop

Ruta absoluta: - / html / body / musicshop / genre / ul / li [2] El índice no está especificado y el valor predeterminado es 1

Ruta relativa: - // musicshop // li [2] Para extraer , incluimos el nombre / text ()
para dar // musicshop // li [2] / text ()

Seleccionar por nombre de atributo

// librería / bookgenre [@ class = 'ficción'] `` `

// bookstore / bookgenre [contains (@ class, 'fiction')] también se puede usar

Rastreo web

Extraeremos enlaces de noticias y temas de la primera página de Nairaland.

Primero, comprobamos Nairaland y el localizador xpath que vamos a utilizar

Para enlaces: // tabla [@ summary = 'enlaces] // a / @ href

Para el tema: // tabla [@ resumen = 'enlaces] // a / text () debería ser una solución directa, pero

La etiqueta contiene texto, así que usaremos // tabla [contiene (@ clase, 'tableros')] [2] // tr [2] // a [descendiente-o-yo :: texto ()]

Después de eso, obtuvimos la información principal, así que importamos nuestra biblioteca

import scrapy

from scrapy.crawler import CrawlerProcess

Creamos una clase de araña y heredamos una araña de scrapy

class Spider(scrapy.Spider):
  name = 'yourspider'
  # start_requests method
  def start_requests( self ):
    yield scrapy.Request(url = "https://www.nairaland.com/", callback=self.parse)

  def parse(self, response):
    blocks = response.xpath("//table[contains(@class,'boards')][2]//tr[2]")
    News_Titles = blocks.xpath(".//a[descendant-or-self::text()]").extract()
    News_Links= blocks.xpath(".//a/@href").extract()
    for crs_title, crs_descr in zip( News_Titles, News_Links ):
      dc_dict[crs_title] = crs_descr

Entonces comenzamos nuestro rastreador

process = CrawlerProcess()
process.crawl(Spider)
process.start()
print(dc_dict)


Aún quiero recomendar el grupo de aprendizaje de Python que construí yo mismo : 721195303 , todos los cuales están aprendiendo Python. Si quieres aprender o estás aprendiendo Python, puedes unirte. Todos son parte del desarrollo de software y comparten productos secos de tiempo. a tiempo (solo relacionado con el desarrollo de software de Python), incluida una copia de los últimos materiales avanzados de Python y la enseñanza basada en cero compilada por mí en 2021. ¡Bienvenidos amigos que están en avanzado e interesados ​​en Python para unirse!

Supongo que te gusta

Origin blog.csdn.net/aaahtml/article/details/113029974
Recomendado
Clasificación