Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

810
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda