Python - pas en mesure d'extraire de la valeur de l'entrée cachée

0

La question

Je suis en train d'extraire la valeur caché d'une balise input. Même si l'élément existe dans le code HTML je ne peux pas le trouver avec bs4.

C'est le message d'erreur que j'obtiens:

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

C'est le html sur le site internet:

<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>

Et voici mon code actuel:

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

J'aimerais avoir de l'aide car il est vraiment à me tracasser. Je vous remercie à l'avance!

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

La meilleure réponse

1

Votre sélection est encore à travailler, penser il y a un autre problème, peut-être que vous ne obtenir le code html que vous attendez.

Comme alternativ de sélectionner et d'obtenir la valeur de ce caché <input> vous pouvez utiliser la commande suivante css selector:

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

Exemple

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)

Sortie

abcdefghijklmnopqrstuvwxyz
2021-11-24 07:51:04

Dans d'autres langues

Cette page est dans d'autres langues

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