Lambda 表达式本质上就是一个函数,可以作为其他函数的变量使用;也就是说,一个函数不是定义成 f(x, y),而是定义成 f(g(x), y),或 f(g(x), h(x)) 的形式。
BeautifulSoup 允许我们把特定函数类型当作 findAll 函数的参数。唯一的限制条件是这些函数必须把一个标签作为参数且返回结果是布尔类型。BeautifulSoup 用这个函数来评估它遇到的每个标签对象,最后把评估结果为“真”的标签保留,把其他标签剔除。
例如,下面的代码就是获取有两个属性的标签:
soup.findAll(lambda tag: len(tag.attrs) == 2)
这行代码会找出下面的标签:
• lxml
这个库(http://lxml.de/)可以用来解析 HTML 和 XML 文档,以非常底层的实现而闻名
于世,大部分源代码是用 C 语言写的。虽然学习它需要花一些时间(其实学习曲线越
陡峭,表明你可以越快地学会它),但它在处理绝大多数 HTML 文档时速度都非常快。
• HTML parser
这是 Python 自带的解析库(https://docs.python.org/3/library/html.parser.html)。因为它不
用安装(只要装了 Python 就有),所以可以很方便地使用。