2010-05-20 9 views
14

J'utilise une belle soupe (en Python). J'ai cet objet d'entrée caché:Paramètres de la fonction de recherche

<input type="hidden" name="form_build_id" id="form-531f740522f8c290ead9b88f3da026d2" value="form-531f740522f8c290ead9b88f3da026d2" /> 

J'ai besoin de ID/valeur.

Voici mon code:

mainPageData = cookieOpener.open('http://page.com').read() 
soupHandler = BeautifulSoup(mainPageData) 

areaId = soupHandler.find('input', name='form_build_id', type='hidden') 

TypeError: find() got multiple values for keyword argument 'name' 

J'ai essayé de changer le code

print soupHandler.find(name='form_build_id', type='hidden') 
None 

Qu'est-ce qui ne va pas?

Répondre

24

Essayez d'utiliser le alternative attrs keyword:

areaId = soupHandler.find('input', attrs={'name':'form_build_id', 'type':'hidden'}) 

Vous ne pouvez pas utiliser un argument mot-clé nom appelé parce que les belles soupe méthodes de recherche définissent déjà un nom l'argument. Vous ne pouvez pas non plus utiliser un mot réservé Python comme pour un mot-clé argument. Beautiful Soupe fournit un argument spécial appelé que vous pouvez utiliser dans ces situations. attrs est un dictionnaire qui agit comme les arguments mots-clés .