Python - Extrayendo datos de una Web.

 
Vista:
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extrayendo datos de una Web.

Publicado por Anikollaste (118 intervenciones) el 06/10/2020 19:14:57
Hola a todos!!
Como resultado de la extracción de direcciones de una web, he obtenido una lista, pero cada elemento de la lista consta de mas información de la que quiero y no sé cómo filtrarlo:
Ejemplo de un elemento de la lista:
'calle baja, 12, 14815, fuente tojar cordoba, cordoba'
Quiero extraer desde 'calle' hasta la primera coma ',' y me he quedado totalmente bloqueado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import requests
from bs4 import BeautifulSoup
 
url='https://empresite.eleconomista.es/Actividad/TRANSPORTES/provincia/CORDOBA/'
def extraerDatos(web):
	pagina=requests.get(url)
	soup=BeautifulSoup(pagina.content, 'html.parser')
	#Buascar todas las direcciones con la etiquetas 'a' de la clase "a_directorio"
	direcciones=soup.find_all('span',class_="bold text-capitalize")
	return direcciones
 
calles=[]
for i in extraerDatos(url):
	calles.append(i.text)
print(calles)
Esta es la salida de datos:

lista
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extrayendo datos de una Web.

Publicado por Jaime (136 intervenciones) el 06/10/2020 19:23:24
Puedes usar la función split, la cual devuelve una lista.
1
2
3
var = 'hola, mi, nombre'
var.split(',')
#['hola', ' mi', ' nombre']
Ya con la lista, puedes aplicar un algoritmo con las necesidades que requieras: iteraciones, busquedas con regex.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extrayendo datos de una Web.

Publicado por Anikollaste (118 intervenciones) el 06/10/2020 19:39:40
No sé bien que me propones... pasar la lista a un string y volver a crear otra lista?
A la lista no le puedo aplicar el método split()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extrayendo datos de una Web.

Publicado por Jaime (136 intervenciones) el 06/10/2020 19:48:14
Lo que expusistes es que tienes un string separado por comas! Pero ya dices que lo que tienes es una lista ya separada.
Puedes aplicar un algoritmo de acuerdo a tus necesidades:
Algo así:
1
2
3
import re
#list es el string del cual quieren sacar solo la palabra
var = re.search ('^calle$', list)
Acá puedes informarte más sobre el modulo re
https://www.w3schools.com/python/python_regex.asp
Recuerde que las expresiones regulares son muy potentes!
Si tienes más dudas, no dudes en exponerlas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extrayendo datos de una Web.

Publicado por Anikollaste (118 intervenciones) el 06/10/2020 20:52:38
Le echaré un vistazo a la info.
P.S. Perdona pero en el comentario hago referencia a la lista tres veces.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extrayendo datos de una Web.

Publicado por joel (901 intervenciones) el 07/10/2020 12:34:58
Tal y como hemos charlado en el chat, publico el código que hemos definido:

1
2
3
4
5
6
7
import requests
from bs4 import BeautifulSoup
 
url='https://empresite.eleconomista.es/Actividad/TRANSPORTES/provincia/CORDOBA/'
pagina=requests.get(url)
soup=BeautifulSoup(pagina.content, 'html.parser')
direcciones=list(map(lambda dir: dir.get_text().split(",")[0], soup.find_all('span',class_="bold text-capitalize")))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extrayendo datos de una Web.

Publicado por Anikollaste (118 intervenciones) el 07/10/2020 12:40:24
Mucho más elegante y con menos lineas de código. Perfecto!
Muchas gracias joel!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar