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,例如,.gtr[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]')