2010-05-20 2 views
14

Sto usando una bella zuppa (in Python). Ho un oggetto di input nascosto:Parametri per la funzione di ricerca

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

Ho bisogno di id/valore.

Ecco il mio codice:

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' 

Ho provato a cambiare il codice:

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

Cosa c'è di sbagliato?

risposta

24

provare a utilizzare il alternative attrs keyword:

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

Non è possibile utilizzare una parola chiave argomento chiamato nome, perché i bei Soup metodi di ricerca già definiscono un nome argomento. Non è inoltre possibile utilizzare una parola riservata Python come parola chiave .

Beautiful Soup fornisce uno speciale argomento chiamato attrs che è possibile utilizzare in queste situazioni. attrs è un dizionario che agisce proprio come gli argomenti delle parole chiave .