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"))