es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo extraer una URL de una etiqueta sin clase o ID dentro de otra etiqueta en bs4 [Python 3]?

Quiero obtener todas las URL de ( h2 class=”” > a href=”” : )

Este código:

import requests
from bs4 import BeautifulSoup

header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"}

Purl = 'https://www.tunisianet.com.tn/301-pc-portable-tunisie'

req = requests.get(Purl, headers=header)
soup = BeautifulSoup(req.content, 'lxml')

ProductUrl = []

# encontrar título del producto
showName = soup.select('h2',{'class':'h3 product-title'})

# encontrar enlace del producto
for i in showName:
    ProductUrl.append(str(i.find('a')))
print(ProductUrl)

for i in ProductUrl:
    print(i[i.find("href"):])

¿Cómo puedo resolverlo?

Por ejemplo:

enter image description here

enter image description here

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener todas las URLs de las etiquetas h2 con class="" y las etiquetas a con href="", puedes modificar el código existente de la siguiente manera:

    import requests
    from bs4 import BeautifulSoup
    
    header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"}
    
    Purl = 'https://www.tunisianet.com.tn/301-pc-portable-tunisie'
    
    req = requests.get(Purl, headers=header)
    soup = BeautifulSoup(req.content, 'lxml')
    
    ProductUrl = []
    
    # buscar todas las etiquetas h2 con class="" y las etiquetas a con href=""
    for h2 in soup.find_all('h2', {'class': ''}):
      for a in h2.find_all('a', {'href': True}):
        ProductUrl.append(a['href'])
    
    print(ProductUrl)
    

    Aquí, utilizamos el método find_all para extraer todas las etiquetas h2 con class="", y para cada etiqueta h2, extraemos todas las etiquetas a con href="" utilizando otro método find_all. Finalmente, añadimos el atributo href de cada etiqueta a a la lista ProductUrl.

    Ten en cuenta que utilizamos {'href': True} en el método find_all para la etiqueta a para asegurarnos de seleccionar solo aquellas etiquetas a que tienen un atributo href (con un valor no vacío).

    La salida del código anterior será una lista de todas las URLs en los atributos href de las etiquetas a seleccionadas.

Comments are closed.