Python 如何找到具有这些属性的所有元素?

Python 如何找到具有这些属性的所有元素?,python,html,web-scraping,beautifulsoup,lxml,Python,Html,Web Scraping,Beautifulsoup,Lxml,请查看这些标记及其属性: 但这不会返回任何值。我做错了什么?有更好的方法吗?find\u all也接受函数,其中函数默认将每个元素作为其属性 试试这个: def findFilter(element): if element.name == "tr": if any(attr in list(element.attrs.values()) for attr in ['data-has-trading-incentive','data-is-centr

请查看这些标记及其属性:


但这不会返回任何值。我做错了什么?有更好的方法吗?

find\u all
也接受函数,其中函数默认将每个
元素作为其属性

试试这个:

def findFilter(element):
    if element.name == "tr":
        if any(attr in list(element.attrs.values()) for attr in ['data-has-trading-incentive','data-is-centralized']):
            return True
    return False


filteredElements = soup.find_all(findFilter)

您可以使用css或语法来匹配任一属性

soup.select('[data-has-trading-incentive], [data-is-centralized]')

然而,这不也会返回非唯一tr的元素吗?tr具有这些属性。你可以在前面加上tr,例如,.g
tr[data has trading incentive],tr[data is centralized]
,但这只会让比赛稍微慢一点。这不是必要的。第一个条件是它应该有一个“tr”标记好了@qharr它是什么elm.attrs?我的错。编辑好了,回答得很好。谢谢
def findFilter(element):
    if element.name == "tr":
        if any(attr in list(element.attrs.values()) for attr in ['data-has-trading-incentive','data-is-centralized']):
            return True
    return False


filteredElements = soup.find_all(findFilter)
soup.select('[data-has-trading-incentive], [data-is-centralized]')