首页 > 解决方案 > 如何使用 id 和名称查找隐藏的输入值 - Python,bs4

问题描述

早上好,亲爱的 SO 社区。最近在尝试解析 HTML 时遇到了一个小问题。我总是使用 bs4 模块,直到现在这一直很好。抓取时我主要需要隐藏输入,如果按名称搜索它们,我可以很容易地找到值。但是现在我发现了一个页面,其中输入也有一个 id,如下所示:

<input type="hidden" value="985207" name="order[ship_address_attributes] 
[id]" id="order_ship_address_attributes_id">

如果其余的已知,我想找到该值。

我试着把 id 部分放在一边,只用名字搜索它,就像我习惯的那样,但这并不顺利,我也没有找到价值。

我的代码:

soup=bs(r.text, 'lxml')
vle=soup.find('input',{'name':'ship_address_attributes'})['value']

我希望找到一种方法来获得价值,以类似于我尝试的方式。有没有一种方法可以像名称一样添加 id?我会很高兴得到任何帮助。非常感谢,并祝整个社区节日快乐。

标签: pythonparsingbeautifulsoup

解决方案


为什么不选择它id

vle = soup.find('input',{'id':'order_ship_address_attributes_id'})['value']

如果该name值没有空格或换行符,则选择它

vle = soup.find('input', {'name':'order[ship_address_attributes][id]'})['value']

这将选择input并具有type=hidden属性nameid

hiddenInputs = soup.select('input[type=hidden]')
for input in hiddenInputs:
    if input.get('name') and input.get('id'):
        print(input['value'])

推荐阅读