我有以下(简化)代码,它使用以下来源:
<html>
<p>line 1</p>
<div>
<a>line 2</a>
</div>
</html>
soup = BeautifulSoup('<html><p>line 1</p><div><a>line 2</a></div></html>')
ele = soup.find('p').nextSibling
somehow_print_tag_of_ele_here
我想获得ele的标签,在本例中为“div”。但是,我似乎只能得到它的孩子的标签。我错过了一些简单的事吗?我以为我可以做ele.tag.name,但这是一个例外,因为标签是None。
#Below correctly prints the div element "<div><a>line 2</a></div>"
print ele
#Below prints "None". Printing tag.name is an exception since tag is None
print ele.tag
#Below prints "a", the child of ele
allTags = ele.findAll(True)
for e in allTags:
print e.name
在这一点上,我正在考虑做一些事情来获取ele的父母,然后获取父母的孩子的标签,并计算有多少上层兄弟俩,倒数到正确的子标签。这看起来很荒谬。
答案 0 :(得分:25)
ele已经是一个标签,试着这样做:
soup = BeautifulSoup('<html><p>line 1</p><div><a>line 2</a></div></html>')
print(soup.find('p').nextSibling.name)
所以在你的例子中它只是
print(ele.name)
答案 1 :(得分:0)
您可以访问元素内的任何内容,就像访问字典一样。 假设您有一个像这样的元素。
<input id="__VIEWSTATE3" name="__VIEWSTATE3" type="hidden" value="MwqzeTH4"/>
您可以像这样访问每个属性
print(elem["id"])
# prints __VIEWSTATE3
答案 2 :(得分:0)
print(soup.find('h1',id _ ='pdp_product_title')) 它没有打印任何细节,请解决此问题
<h1 id="pdp_product_title" class="headline-2 css-zis9ta" data-test="product-title">Nike Air Force 1 Shadow</h1>