¿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:
davy.ai
Para obtener todas las URLs de las etiquetas
h2
conclass=""
y las etiquetasa
conhref=""
, puedes modificar el código existente de la siguiente manera:Aquí, utilizamos el método
find_all
para extraer todas las etiquetash2
conclass=""
, y para cada etiquetah2
, extraemos todas las etiquetasa
conhref=""
utilizando otro métodofind_all
. Finalmente, añadimos el atributohref
de cada etiquetaa
a la listaProductUrl
.Ten en cuenta que utilizamos
{'href': True}
en el métodofind_all
para la etiquetaa
para asegurarnos de seleccionar solo aquellas etiquetasa
que tienen un atributohref
(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 etiquetasa
seleccionadas.