为了账号安全,请及时绑定邮箱和手机立即绑定

如何找到带有 id 和 name 的隐藏输入值 - Python,bs4

如何找到带有 id 和 name 的隐藏输入值 - Python,bs4

明月笑刀无情 2021-09-25 18:28:26
早上好,亲爱的 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?我会很高兴得到任何帮助。非常感谢,并祝全社会节日快乐。
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以使用regexwithBeautifulSoup来查找正确的标签。


例如:


import re

from bs4 import BeautifulSoup as bs


a = '''<input type="hidden" value="985207" name="order[ship_address_attributes] 

[id]" id="order_ship_address_attributes_id">'''


# Or:

# soup = bs(a, 'lxml')

soup = bs(a, 'html.parser')

data = soup.find('input', {'name': re.compile(r'order\[\w+\]\s+\[\w+\]')})

print(data['value'])  # 985207

或者,如果您想找到完全regex匹配的标签,您可以执行以下操作:


data = soup.find('input', {'name': re.compile(r'order\[ship_address_attributes\]\s+\[id\]')})

print(data['value'])  # 985207


查看完整回答
反对 回复 2021-09-25
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信