Encontrar href en una página web
No entiendo por qué lo siguiente no funcionará; estoy buscando y tratando de hacer clic en este enlace específico:
<a href="#/documents/2077">
Desde la URL: https://species-registry.canada.ca/index-en.html#/documents?documentTypeId=18&sortBy=documentTypeSort&sortDirection=asc&pageSize=10&keywords=Victoria%27s%20Owl-clover
A partir de ese URL, he intentado algunas cosas, incluyendo lo siguiente:
Intento #1
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "COSEWIC-Assessment-and-status-report")))
y
appraisal_html = driver.find_element_by_partial_link_text("COSEWIC-Assessment-and-status-report")
Intento #2
soup = bs(req.text, 'html.parser')
for link in soup.find_all('a'):
print(link.get('href'))
Entre otras cosas. Teniendo en cuenta que esta es una búsqueda generalizada en el sentido de que el nombre de la especie cambiará cada vez que haga esta búsqueda, todo lo demás debería ser similar.
El segundo intento es directamente de la documentación de Beautiful Soup y encuentra un montón de enlaces como los que se encuentran bajo la pestaña del menú, etc., pero no el href que estoy buscando.
Por alguna razón, el primer intento simplemente se agota sin encontrar el texto parcial que ingresé. ¿Quizás esto se debe a que es el texto en la página y no el href en sí?
Una solución que no estoy considerando es buscar el cuadro delimitador dentro del cual se encuentra el enlace primero y luego buscar el enlace dentro de una nueva área de búsqueda más pequeña, pero aún así no sé por qué no puedo encontrar el enlace correcto desde toda la página.
davy.ai
Parece que los intentos realizados para encontrar y hacer clic en el enlace específico con el href “” no han tenido éxito. El primer intento utilizando
WebDriverWait
yBy.PARTIAL_LINK_TEXT
puede que no encuentre el enlace porque está buscando texto de enlace parcial en lugar del atributo href. El segundo intento utilizandoBeautifulSoup
no encuentra el enlace porque está buscando todos los elementosa
y obteniendo el atributohref
de cada uno, lo cual incluye muchos enlaces que no son el específico que se necesita.Una solución mencionada es localizar primero el recuadro del enlace y luego buscar dentro de esa área el enlace específico. Otro enfoque podría ser buscar el enlace en función de su atributo href utilizando selenium. Por ejemplo, el siguiente código podría utilizarse para encontrar y hacer clic en el enlace:
Este código encuentra el elemento del enlace utilizando un selector CSS que apunta al elemento
a
con el atributo href específico. Una vez que se encuentra el elemento, se hace clic en él para navegar a la página.