Beautifulsoup: 标签名和属性名是否可以通过其值获取?
Beautifulsoup: Is it possible to get tag name and attribute name by its value?
我正在尝试抓取大量网站。他们都有一个特定的 table,但有一些变化。例如:如果您检查 this URL.
它有属性值href="#icaec13e17ee4432d9971f5e4b3d32ba1_265"
并引用标签<div id="icaec13e17ee4432d9971f5e4b3d32ba1_265"
。然而,在另一个 URL 中,它被表示为 <a name=...>..</a>
。所以,我将只有属性值 icaec13e17ee4432d9971f5e4b3d32ba1_265
。标记名称和属性名称各不相同。如何获取属性值?
您可以定义一个过滤器函数来检查是否有一个 HTML 标签的属性值等于 value
:
def your_filter(tag, value):
for key in tag.attrs.keys():
if tag[key] == value:
return True
return False
# alternatively as one liner:
def your_filter(tag, value):
return any(tag[key] == value for key in tag.attrs.keys())
那么,你可以这样使用它:
soup = BeautifulSoup(html_code)
tags = soup.find_all(lambda tag: your_filter(tag, "icaec13e17ee4432d9971f5e4b3d32ba1_265"))
我正在尝试抓取大量网站。他们都有一个特定的 table,但有一些变化。例如:如果您检查 this URL.
它有属性值href="#icaec13e17ee4432d9971f5e4b3d32ba1_265"
并引用标签<div id="icaec13e17ee4432d9971f5e4b3d32ba1_265"
。然而,在另一个 URL 中,它被表示为 <a name=...>..</a>
。所以,我将只有属性值 icaec13e17ee4432d9971f5e4b3d32ba1_265
。标记名称和属性名称各不相同。如何获取属性值?
您可以定义一个过滤器函数来检查是否有一个 HTML 标签的属性值等于 value
:
def your_filter(tag, value):
for key in tag.attrs.keys():
if tag[key] == value:
return True
return False
# alternatively as one liner:
def your_filter(tag, value):
return any(tag[key] == value for key in tag.attrs.keys())
那么,你可以这样使用它:
soup = BeautifulSoup(html_code)
tags = soup.find_all(lambda tag: your_filter(tag, "icaec13e17ee4432d9971f5e4b3d32ba1_265"))