将部分属性传递给 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)
我对 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)