Extracción de datos de paginas web con Pandas - WebScraping con Python
Introducción:
La función read_html
import pandas as pd #Se lee los datos de wikipedia de los países paises=pd.read_html('https://es.wikipedia.org/wiki/Anexo:Pa%C3%ADses') print(paises)
[ 0 0 Estado(forma oficial) 1 República Islámica de Afganistán 2 República de Albania 3 República Federal de Alemania 4 Principado de Andorra 5 República de Angola 6 Antigua y Barbuda 7 Reino de Arabia Saudita 8 República Argelina Democrática y Popular 9 República Argentina 10 República de Armenia 11 Mancomunidad de Australia 12 República de Austria 13 República de Azerbaiyán 14 Mancomunidad de las Bahamas 15 República Popular de Bangladés 16 Barbados 17 Reino de Baréin 18 Reino de Bélgica 19 Belice 20 República de Belarús 21 República de Benín 22 República de la Unión de Myanmar[4] 23 Estado Plurinacional de Bolivia 24 Bosnia y Herzegovina 25 República de Botsuana 26 República Federativa de Brasil 27 Estado de Brunéi Darussalam 28 República de Bulgaria 29 Burkina Faso .. ... 166 Reino de eSwatini
paises[0]
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|---|
0 | Estado(forma oficial) | Nombre común | Forma de gobierno | Capital(es) | Continente | Estatus ONU | Soberanía | Notas | Ubicación |
1 | República Islámica de Afganistán | Afganistán | República islámica presidencialista | Kabul | Asia | Miembro (1946) | Reconocida | NaN | NaN |
2 | República de Albania | Albania | República parlamentaria | Tirana | Europa | Miembro (1955) | Reconocida | NaN | NaN |
3 | República Federal de Alemania | Alemania | República parlamentaria | Berlín | Europa | Miembro (1973)[1] | Reconocida | Estado miembro de la Unión Europea. Alemania e... | NaN |
4 | Principado de Andorra | Andorra | Monarquía constitucional | Andorra la Vieja | Europa | Miembro (1993) | Reconocida | Coprincipado con dos jefes de Estado, el presi... | NaN |
for x in range(1, 195): nombre = paises[0][1][x] # Nombre de los paises. Por ello utilizamos el indice 1 capital = paises[0][3][x] # Nombre d elas capitales. Indice 3 continente = paises[0][4][x] # Nombre de los continentes. Indice 4 print("%s es la capital de %s (%s)" % (capital, nombre, continente))
Kabul es la capital de Afganistán (Asia) Tirana es la capital de Albania (Europa) Berlín es la capital de Alemania (Europa) Andorra la Vieja es la capital de Andorra (Europa) Luanda es la capital de Angola (África) Saint John es la capital de Antigua y Barbuda (América) Riad es la capital de Arabia Saudí / Arabia Saudita (Asia) Argel es la capital de Argelia (África) Buenos Aires es la capital de Argentina (América) Ereván es la capital de Armenia (Asia-Europa)
...
Y el resultado debería ser una lista de 195 lineas.
Este proceso realizado con Pandas, nos abre las puertas a crear archivos csv o excel con
todos los datos que tu extraigas.
¿Que te pareció? No dudo en que te servirá de mucho.
¿Alguna duda? No dudes en dejar tu comentario.
Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
-
-
Hola Enrique, gracias por visitar nuestro blog. De hecho todo esto lo he hecho en Jupyter. Si quiere que le facilite el archivo "ipynb" solo digamelo.
-
Hola, muchas gracias me puedes facilitar el notebook
gracias
-
-
hola amigo por favor me podrias facilitar el arcgivo "ipynb" te lo agradeceria lo necesito pra un proyecto de mi universidad
-
-
Excelente, no conocía pandas
-
Gracias por visitar el blog. Puede conocer más sobre Pandas indagando en nuestros artículos :D.
-
-
hola amigo
me encanta sus tutoriales, son geniales y me ayudan mucho.dos cosas, la primera es una petición, si es posible claro. Me gustaría que realizaras proyectos enteros de aplicaciones para el día a día, como pueden ser compresores de archivos(rar, zip, etc), gestores de descargas, y cosas así, para diseñas nuestras propias aplicaciones.
los segundo, comentar que su código de arriba, me lanza un error:
Traceback (most recent call last):
File "109-Scraping con Pandas.py", line 20, in
nombre = dfs[0][1][x] # Nombre de los paises. Por ello utilizamos el indice 1
File "C:ProgramDataAnaconda3libsite-packagespandascoreframe.py", line 2800, in __getitem__
indexer = self.columns.get_loc(key)
File "C:ProgramDataAnaconda3libsite-packagespandascoreindexesbase.py", line 2648, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas_libsindex.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas_libsindex.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
File "pandas_libshashtable_class_helper.pxi", line 1618, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas_libshashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 1y no se ha que se debe.
lo solucione modificandolo:
for x in range(1, 195):
nombre = dfs[0]['Nombre común'][x] # Nombre de los paises. Por ello utilizamos el indice 1
capital = dfs[0]['Capital(es)'][x] # Nombre de elas capitales. Indice 3
continente = dfs[0]['Continente'][x] # Nombre de los continentes. Indice 4
print("%s es la capital de %s (%s)" % (capital, nombre, continente))muchas gracias por su tiempo.
un saludo-
Las líneas del Blog me dan error, pero la corrección del Anónimo funciona!!
-
-
Muy bueno el código que permite rescatar datos de una página web.
Deja una respuesta
Gracias muy bien presentado el tema pero quizas sea valioso usar jupyter para mostrar los datos creo que es un poco mas tangible y facil de comprender.
Nuevamente excelente tutorial, este tema es complicado y me ha costado mucho tiempo dominarlo. Felicidades