BeautifulSoup是将复杂的HTML文档转换成一个复杂的树形结构,每个节点都是python对象,周游的节点可以归纳为四种 Tag:标签及其类容,不过只能拿到第一个找到的对象 Navigablestring:拿到标签里面的类容 BeautifulSoup:拿到整个文档 comment:拿到注释
from bs4 import BeautifulSoup
file = open("./baidu.html","rb")
html = file.read().decode("utf-8")
bs = BeautifulSoup(html,"lxml")#第一个参数表示要被解析的对象文件,第二个参数是解析器
print(bs)#显示整个文档
print(bs.title)#标签和标签里面的类容
print(bs.title.string)#只显示找到的第一个标签里面的类容
文档的遍历
from bs4 import BeautifulSoup
file = open("./baidu.html","rb")
html = file.read().decode("utf-8")
bs = BeautifulSoup(html,"lxml")#第一个参数表示要被解析的对象文件,第二个参数是解析器
#文档的遍历
print(bs.head.contents[1])#获的头部标签类容,并且以列表形式进行返回
文档的搜索
#文档的搜索
#字符串过滤:会查找与字符串完全匹配的字符。返回一个列表,列表里面的每个元素是包含标签。
print(bs.find_all("title"))
#正则表达式进行搜索,会查找所有与标签有a的
t_list = bs.find_all(re.compile("title"))
for i in t_list:
print(i)
#kwargds 参数,返回一个列表
print(bs.find_all(id='head'))
#text参数 ,可以和正则表达式进行配合找到包含特定文本标签里面的类容
print(bs.find_all(text=re.compile("\d")))#匹配文本里面有数字的文本类容,标签并不会给出来
#limit参数
print(bs.find_all("h1",limit=3))#这里还是会给你出标签的
css选择器
#css选择器
#1.通过标签来查找
print(bs.select('title'))#这个是会返回标签的,和字符串过滤器达到的效果是一样的
print(bs.select('.mnav'))#通过类名进行查找
print(bs.select('#u1'))#通过id进行查找
# print(bs.select('a[classes]=bc'))#通过属性进行查找
print(bs.select("head>meta"))#通过子标签进行查找
print(bs.select('h1~h2'))#通过兄弟标签进行查找