2010-05-20 4 views
14

Я использую красивый суп (на Python). У меня есть такой скрытый входной объект:Параметры для функции поиска

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

Мне нужно в id/value.

Вот мой код:

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' 

Я попытался изменить код:

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

Что случилось?

ответ

24

Try с помощью alternative attrs keyword:

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

Вы не можете использовать ключевое слово аргумента названного имя, потому что красивый суп методы поиска уже определить имя аргумента. Вы также не можете использовать зарезервированное слово Python как для ключевого слова аргумент.

Прекрасный суп предлагает специальный аргумент , называемый attrs, который вы можете использовать в этих ситуациях: . attrs - словарь , который действует так же, как аргументы ключевого слова .