如何找到带有 id 和 name 的隐藏输入值 - 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?我会很高兴得到任何帮助。非常感谢,并祝全社会节日快乐。


明月笑刀无情
浏览 173回答 2
2回答

临摹微笑

您可以使用regexwithBeautifulSoup来查找正确的标签。例如:import refrom bs4 import BeautifulSoup as bsa = '''<input type="hidden" value="985207" name="order[ship_address_attributes]&nbsp;[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'])&nbsp; # 985207或者,如果您想找到完全regex匹配的标签,您可以执行以下操作:data = soup.find('input', {'name': re.compile(r'order\[ship_address_attributes\]\s+\[id\]')})print(data['value'])&nbsp; # 985207
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python