我想把每个数字分配给python2.7中合适的标签。在下面的例子中,我有2个数字和2个标签。由于NavigableString类型的原因,我无法迭代next_同级的元素。但是,如果我不能,我怎么处理这个问题呢? 谢谢
编辑:我不能基于div标记进行搜索,因为名称和数字可能在完全不同的html标记中。因此,我不想限制这一点
from bs4 import BeautifulSoup
tempHtml = """
<html>
<body>
<div>
<h1>tag1</h1>
aaaa
<div class="tel">here is 0111 111 1111 <span class="note">*</span></div>
<h1>tag2</h1>
<div class="tel mob">0111 222 2222 <span class="note">**</span></div>
</div>
</body>
</html>
"""
soup = BeautifulSoup(tempHtml, 'html.parser')
extracted = soup.find_all(['h1'])
for i in range(len(extracted)):
for sibling in extracted[i].next_siblings:
tagname = extracted[i].text.strip()
number_with_text = extracted[i].next_element
number = re.findall('\d+', number_with_text)
number = ''.join(number)
print(str(number) + ' >> ' + str(tagname))
预期产量:
0111 111 1111 >> tag1
0111 222 2222 >> tag2
这里有一条路
查找
h1
-div
同级的列表。然后在每种情况下,从div
的文本中找出电话号码,并获得text
的前一个兄弟姐妹的div
相关问题 更多 >
编程相关推荐