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