一、关于两个重要的函数find(),findAll()的总结
用途:通过find和findAll过滤HTML页面,查找需要的标签或者标签组
函数构造:
findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)
其中:
tag是标签参数,可以传一个标签或多个标签组成的标签列表
attributes是python封装的一个标签的若干属性和对应的属性值
findAll({"h1", "h2", "h3", "h4"})
findAll("span", {"class": {"green", "red"}})
#寻找所有class为green和red的span标签
recursive是一个布尔变量,为true时查找标签参数的所有自标签、为false时只查找文档的一级标签。默认情况下是true
text是文本参数,用标签的文本内容去匹配。
nameList = bsObj.findAll(text="something")
limit是范围限制参数,之应用在find函数中。find相当于findAll在limit=1时的情形,limit=x就表示只要求获取前x项结果
keyword是关键词参数,可以选择那些具有指定属性的标签
allText = bsObj.findAll(id="text")
print((allText[0]).get_text())
.get_text()会把你正在处理的HTML文档中的所有标签都清除,然后只返回一个只包含文字的字符串。如果你正在处理一个包含许多超链接、段落以及标签的大段源代码,那么get_text()会把这些超链接、段落、以及标签全都清除,剩下不带标签的文字。
通常在你准备打印,存储以及操作数据时,应该在最后再使用.get_text()去提取你想要的文本信息,在一般的情况下,应该尽可能的保留HTML文档的标签的结构。
二、BeautifulSoup的其他对象
BeautifulSoup对象:前面代码示例中的bsObj对象
标签Tag对象:BeautifulSoup对象通过find和findAll,胡哦这直接调用自标签获取的一列对象或单个对象,就像:bsObj.div.h1。
NavigableString对象:表示标签里的文字(不是标签)
Comment对象:用来查找HTML文档的注释标签,如<!–something–>