Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

806
Vistas
Python - Beautifulsoup - bucle de etiquetas divs con los mismos nombres de clase

Me pregunto cómo eliminar información de un sitio web donde hay varios elementos que tienen los mismos identificadores de los que quiero eliminar datos de precios. El problema que tengo es que cuando recorro cada div e imprimo () veo que se pega varias veces en la consola. Supongo que esto se debe al div. Estoy localizando múltiples elementos encapsulados con la misma etiqueta + nombre de clase.

Notación de página HTML

 GraphicPrice = soup.findAll('div', class_='col') for price in GraphicPrice: prices = price.find('span', class_='price__amount') if prices is None: pass else: print(prices.text)

Producción:

 £859.99 £859.99 £1,049.99 £1,049.99 £829.99 £829.99 £899.99 £899.99 £999.95 £999.95 £999.95 £999.95

Lo que quiero es eliminar la información duplicada y entender cómo refactorizar mi código para evitar que esto suceda.

Quiero que se impriman todos los elementos de los precios de la página. Actualmente obtengo los precios pero está duplicado 3 veces.

Cualquier ayuda sería apreciada. (Todavía me estoy inclinando) :)

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

primero, desecha todas las etiquetas div con la clase "col"

 soup.findAll('div', class_='col')

esta etiqueta div tiene una clase de intervalo y esa clase tiene otras dos etiquetas de intervalo anidadas.

Entonces, si codificas así

 price.find('span', class_='price__amount')

elimina dos etiquetas de intervalo con "price_amount" en cada etiqueta div. que representa una clase incorrecta.

si desea una segunda etiqueta de intervalo, su código es así.

 soup.findAll('span', class_='price--sale--colored').find('span', class_='price__amount')
about 4 years ago · Santiago Gelvez Denunciar

0

Use .select('span') para obtener un objeto desde el interior del objeto seleccionado como

 GraphicPrice = soup.findAll('div', class_='col') for price in GraphicPrice: prices = price.select('span')
about 4 years ago · Santiago Gelvez Denunciar

0

Me topé con un error de este tipo recientemente que me trajo aquí en busca de respuestas, pero por desgracia, lo descubrí y aquí estoy publicando la solución para aquellos que la necesitarán en los próximos días.

Eso sí, hay diferentes enfoques para un problema

Por lo tanto, elimine la lista así, pero configure la lista para generar elementos alternos de la lista.

 GraphicPrice = soup.findAll('div', class_='col') for price in GraphicPrice: prices = price.find('span', class_='price__amount') if prices is None: pass else: print(prices.text) ### then loop the list to get ###alternating values new_price= prices[1::2] #or newprice= [prices[p] for p in range(len(prices)) if p%2 ==0]
about 4 years ago · Oloyede Abdul Ganiyu Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda