早上好,亲爱的 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
添加回答
举报
0/150
提交
取消