我的HTML就像:
<body>
<div class="afds">
<span class="dfsdf">mytext</span>
</div>
<div class="sdf dzf">
<h1>some random text</h1>
</div>
</body>
我想找到所有包含“ 文本”的标签及其对应的类。在这种情况下,我想要:
接下来,我希望能够浏览返回的标签。例如,找到 div 父标记以及所有返回标记的相应类别。
如果我执行以下操作
soupx.find_all(text=re.compile(".*text.*"))
它只是返回标签的文本部分:
['mytext', ' some random text']
请帮助。
答案 0 :(得分:2)
您可能正在寻找符合以下条件的东西:
ts = soup.find_all(text=re.compile(".*text.*"))
for t in ts:
if len(t.parent.attrs)>0:
for k in t.parent.attrs.keys():
print(t.parent.name,t.parent.attrs[k][0])
else:
print(t.parent.name,"null")
输出:
span dfsdf
h1 null
答案 1 :(得分:1)
find_all()不仅返回字符串,还返回bs4.element.NavigableString。 这意味着您可以在这些结果上调用其他beautifulsoup函数。
看看find_parent和find_parents:documentation
childs = soupx.find_all(text=re.compile(".*text.*"))
for c in childs:
c.find_parent("div")