我对python相对较新,但我一直在关注一些youtube教程。我一直在使用beautifulsoup4库进行一些数据抓取。我想基于一个属性的一部分使用findall函数。
属性是onclick = some_garbage-importantline-garbage。有没有办法根据属性的一部分找到对象。
我尝试使用这行代码来解决这个问题:
soup.findAll('a',{'onclick':'[^.]*importantline[^.]*'})
它不起作用。我已经尝试过查找,但我想我真的不知道该怎么说这个问题或者要查找什么。请指出我正确的方向。谢谢!
答案 0 :(得分:1)
尝试使用列表理解:
[a for a in soup.findAll('a') \
if a.get('onclick') and 'importantline' in a['onclick']]
答案 1 :(得分:1)
首先,您没有编译正则表达式。此外,您可以简化它:
import re
soup.findAll('a', {'onclick': re.compile(r'importantline')})
此外,您可以避免使用正则表达式并使用函数:
soup.findAll('a', onclick=lambda x: x and 'importantline' in x)