import bs4 from BeautifulSoup
beautifulsoup库常用函数:
- 首先:bs=BeautifulSoup(html, "html.parser")到解析过后的html #html是已经获取的文本格式的html,html.parser是bs解析器,可以自行选择;
- beautifulsoup将html文档转换成一个树形结构,每个节点都是Python对象,所有的对象可以归纳为4种:
- Tag:通俗的讲就是一个个标签,
- NavigableString:标签内部的文字
- BeautifulSoup:也就是整个html文档形成的结构树
- Comment:注释,会把注释符号给去掉
- beautifulsoup将html文档转换成一个树形结构,每个节点都是Python对象,所有的对象可以归纳为4种:
- 常用函数
- bs选择器:
- bs.select("xxx"):得到所有xxx标签
- bs.select(".xxx"):通过类名查找
- bs.select("#xxx"):通过id查找
- bs.select("xxx > yyy"):xxx的子标签yyy
- bs.select(".xxx ~ .yyy") #xxx标签的兄弟标签
- ......
- Tag:
- bs.find_all('xxx'):找到所有的<xxx>标签里的内容(包括标签)
- bs.find("xxx"):只返回第一个<xxx> == bs.'标签名'
- 某TAG.name:返回这个标签的名字
- 某TAG.attrs:返回此标签所有的属性,是一个字典类型
- NavigableString:
- TAG.string就可以取到标签内部的文字
- BeautifulSoup:就是整个html
- Comment:注释,会去掉注释符号
- 有时标签内的文字其实是注释,使用.string方法时会得到已经去掉了注释符号的注释,这时就需要去判断是不是注释,再进行判断
- 格式整理
- .strip()、.lstrip()、.rstrip():去掉空格
- .replace('aaa', 'bbb'):用bbb替换掉aaa
- 其他
- 直接子节点
- .contents:将子节点的属性以列表输出
- 可以使用.contents[index]进行输出,但是并不是一个标签对应一位索引
- .children:返回一个list生成器对象,直接遍历就可以得到里面的内容
- .contents:将子节点的属性以列表输出
- 直接子节点
- bs选择器: