为了实现您的目标,只需选择这两个,将它们放入['CSRFToken','CSRFToken2']:
soup.find_all('input', {'name': ['CSRFToken','CSRFToken2'], 'type': 'hidden'})
这将为您提供一个标签结果集,您必须对其进行迭代以获取其值。
作为替代和更通用的方法,您可以将css selectors 与dict comprehension 结合使用作为众多选项之一:
选择所有隐藏的输入
soup.select('input[type="hidden"]')
与find_all() 的替代方案
soup.find_all("input", type="hidden")
迭代结果集
{i.get('name'):i.get('value') for i in soup.select('input[type="hidden"]')}
迭代结果集,包括。检查名称是否包含CSRFToken
{i.get('name'):i.get('value') for i in soup.select('input[type="hidden"]') if 'CSRFToken' in i.get('name')}
这将根据您的条件为您提供名称/值对的字典。
示例
from bs4 import BeautifulSoup
html='''
<div>
<input type="hidden" id="CSRFToken" name="CSRFToken" value="HFT/qajA/9FV2kJvMvONwurnFDY6GXZBAA=="/>
<input type="hidden" id="CSRFToken2" name="CSRFToken2" value="CSRFTOKEN2VALUE"/>
Login
<input type="password" id="LogBox" name="B8d5" />
<input type="hidden" name="loginurl" value="/general/status.html"/>
<input id="login" type="submit" value=" " />
</div>
'''
soup=BeautifulSoup(html)
{i.get('name'):i.get('value') for i in soup.select('input[type="hidden"]') if 'CSRFToken' in i.get('name')}
输出
{'CSRFToken': 'HFT/qajA/9FV2kJvMvONwurnFDY6GXZBAA==', 'CSRFToken2': 'CSRFTOKEN2VALUE'}