Problema al seleccionar una etiqueta en BeautifulSoup.
Tengo una etiqueta como la siguiente que quiero seleccionar con Beautiful Soup
html
<td align="right" class="simcal" valign="top"> Title:<br/></td>
Cuando intento seleccionar esta etiqueta con los siguientes códigos, todo está bien.
Ejemplo 1:
my_tag = soup.find(
'td',
attrs={"align": "right", "class": "header2", "valign": 'top'},
)
Ejemplo 2:
my_tag = soup.find(
text=" Title:",
attrs={"align": "right", "class": "header2", "valign": 'top'},
)
Pero cuando trato de combinar ambos [Beautiful Soup][1], Beautiful Soup no puede encontrar el elemento que quiero.
This will fail
my_tag = soup.find(
'td',
text=" Title:",
attrs={"align": "right", "class": "header2", "valign": 'top'},
)
Entonces, mi pregunta aquí es ¿alguien puede explicarme qué está sucediendo aquí?
davy.ai
El problema aquí es que al usar el argumento
text
en el métodofind()
, Beautiful Soup busca coincidencias exactas del texto proporcionado. En este caso, el argumentotext
está establecido en “Title:”, lo que significa que Beautiful Soup está buscando una etiqueta que tenga exactamente “Title:” como su contenido de texto. Sin embargo, en el código HTML proporcionado, el contenido de texto de la etiquetatd
es “Title:” seguido de un salto de línea (<br>
), lo que no es una coincidencia exacta con “Title:”.Para seleccionar esta etiqueta usando Beautiful Soup, puede eliminar el argumento
text
del métodofind()
o utilizar una expresión regular para buscar una etiqueta que contenga el texto “Title:”. Por ejemplo:Cualquiera de estas opciones debería permitirle seleccionar la etiqueta deseada con Beautiful Soup.