Python - no es capaz de extraer valor de entrada oculto

0

Pregunta

Estoy tratando de extraer el valor de un oculto de la etiqueta de entrada. Aunque el elemento existe en el HTML me puedo encontrar con bs4.

Este es el mensaje de error que obtengo:

AttributeError: 'NoneType' object has no attribute 'find'

Este es el código html en la página web:

<form id="exampleid" class="exampleclass" action="/ex/ex-ex/ex/2" method="post">
    
    <more html>
                                
    <div>
    <input type="hidden" name="csrf" value="abcdefghijklmnopqrstuvwxyz">
    </div></form>

Y este es mi código actual:

csrf = soup.find("form", {"id": "exampleid"})
csrf = csrf.find('input', {'name': 'csrf'}).get("value")
print(csrf)

Agradecería cualquier tipo de ayuda ya que realmente me molesta. Gracias de antemano!

beautifulsoup forms hidden-field python
2021-11-23 17:09:09
1

Mejor respuesta

1

Su selección se sigue trabajando, creo que hay otro problema, tal vez usted no obtener el código html que usted espera.

Como alternativ a seleccionar y obtener el valor de esta oculto <input> puede utilizar los siguientes css selector:

soup.select_one('#exampleid input[name*="csrf"]')['value']

Ejemplo

from bs4 import BeautifulSoup

html = '''
<form id="exampleid" class="exampleclass" action="/ex/ex-ex/ex/2" method="post">
<div>
<input type="hidden" name="csrf" value="abcdefghijklmnopqrstuvwxyz">
</div></form>'''

soup = BeautifulSoup(html, "lxml")

csrf = soup.select_one('#exampleid input[name*="csrf"]')['value']

print(csrf)

Salida

abcdefghijklmnopqrstuvwxyz
2021-11-24 07:51:04

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................