¿Cómo obtener el archivo de salida Scrapy en un archivo XML?

Requisito previo: Implementación de Web Scraping en Python con Scrapy

Scrapy proporciona un método rápido y eficiente para raspar un sitio web. Web Scraping se utiliza para extraer los datos de los sitios web. En Scrapy creamos una araña y luego la usamos para rastrear un sitio web. En este artículo, vamos a extraer datos de población por país del sitio web de worldometers.

Implementemos paso a paso:

Paso 1: crea un proyecto de Scrapy

scrapy startproject gfgdemo

Usamos el comando anterior en la línea de comando para crear el proyecto y luego cambiamos el directorio a gfgdemo. Luego de esto, abrimos el proyecto en el editor de nuestra elección (aquí VS Code) .

Paso 2: Creando la Araña para la Población

Población de arañas raras www.worldometers.info/world-population/population-by-country

Se agrega un nuevo archivo llamado corona.py al directorio de arañas .

Paso 3: realice los siguientes cambios en la población.py

Python3

# only keep the base domain
allowed_domains = ['www.worldometers.info'] 
  
# change http to https
start_urls = ['https://www.worldometers.info/world-population/population-by-country/']

Paso 4: preparación del archivo para raspar los datos

Primero, visitaremos www.worldometers.info/world-population/population-by-country y deshabilitaremos el javascript de la siguiente manera 

  • Abra la herramienta de inspección presionando Ctrl+Shift+i
  • Luego presione Ctrl+Shift+p y escriba javascript y haga clic en el Depurador que se muestra en amarillo para deshabilitar javascript y luego actualice la página.

  • Luego de esto, seleccionaremos la parte a raspar usando el selector xpath.

  • Escriba los códigos para extraer los datos específicos. Escribimos el siguiente código en el método parse de la araña.

Python3

def parse(self, response):
        countries = response.xpath("//tr")
      
        for country in countries:
            name = country.xpath("(.//td)[2]/a/text()").get()
            population = country.xpath("(.//td)[3]/text()").get()
            yield {
                'name':name,
                'population':population
  
            }

Paso 5: raspado de datos

En la línea de comando, escriba el siguiente comando para raspar los datos del nombre del país y su población.

scrapy crawl population

Obtenemos los datos como una salida de línea de comandos como se muestra arriba.

Para extraer los datos como un archivo XML escribimos el siguiente código en la línea de comando.

scrapy crawl {spider} -o {filename}.xml
Ex: scrapy crawl population -o data.xml

Producción:

Esto creará un archivo XML en el directorio del proyecto con los datos extraídos. El archivo data.xml aquí contiene los datos como

Producción:

<?xml version="1.0" encoding="utf-8"?>
<items>
<item><name>None</name><population>None</population></item>
<item><name>China</name><population>1,439,323,776</population></item>
<item><name>India</name><population>1,380,004,385</population></item>
<item><name>United States</name><population>331,002,651</population></item>
<item><name>Indonesia</name><population>273,523,615</population></item>
.
.
.
<item><name>Niue</name><population>1,626</population></item>
<item><name>Tokelau</name><population>1,357</population></item>
<item><name>Holy See</name><population>801</population></item>
</items>

Publicación traducida automáticamente

Artículo escrito por muazzamfaraaz y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *