将部分属性传递给 Beautiful Soup findall 函数

Passing partial attributes into Beautiful Soup findall Function

我对 python 比较陌生,但我一直在关注一些 YouTube 教程。我一直在使用 beautifulsoup4 库进行一些数据抓取。而我想根据一个属性的一部分使用findall函数。

属性是onclick = some_garbage-importantline-garbage。有没有一种方法可以根据属性的一部分来查找对象。

我试着用这行代码来解决这个问题:

soup.findAll('a',{'onclick':'[^.]*importantline[^.]*'})

没用。我试过查找它,但我想我真的不知道如何表达这个问题或查找什么。请指出正确的方向。谢谢!

尝试使用列表理解:

[a for a in soup.findAll('a') \
    if a.get('onclick') and 'importantline' in a['onclick']]

首先,你没有编译你的正则表达式。另外,你可以简化它:

import re

soup.findAll('a', {'onclick': re.compile(r'importantline')})

此外,您可以避免使用正则表达式并使用函数:

soup.findAll('a', onclick=lambda x: x and 'importantline' in x)