调整find_all()表达式以查找图像

时间:2017-05-14 16:12:16

标签: beautifulsoup bs4

我正在使用以下find_all()表达式来获取 所有NavigableStrings,按正常流程排序。

all_nav_strings = [x for x in node.find_all(text=True) if x.strip() != "" if not type(x) is bs4.Comment]

我想调整find_all()表达式以查找所有图像(按正常流程顺序)。

我试过了 find_all([text = True, img = True])

1 个答案:

答案 0 :(得分:0)

如果node中的所有元素都是图像或包含任何文本,则应该获取所有元素:

all_nav_strings = [ 
    tag for tag in node.find_all() 
    if (tag.text.strip() or tag.name == 'img') and not type(tag) is bs4.Comment 
]

使用lambdafind_all的更优雅的解决方案(如果你喜欢lambdas):

all_nav_strings = node.find_all(
    lambda tag: (tag.text.strip() or tag.name == 'img') and type(tag) is not bs4.Comment
)

如果您不希望recursive=False获取find_all

中的所有子标记,请使用tag