python爬虫----BeautifulSoup库
导入beautifulsoup
1 | from bs4 import BeautifulSoup |
beautifulsoup方法
1 | soup = BeautifulSoup("<p>date</p>","html.parser") |
- 第一个参数是利用requests库得到的网页全代码,可以是字符串也可以是HTML文件
- 第二个参数是选择解析这段HTML代码的解释器
- 最后会得到一个能代表HTML标签树的一个实例
- 也可以理解为标签的集合
beautifulsoup库的基本元素
所有的bs4库的解析器
- lxml的HTML解析器
条件:pip install lmxl
使用方法:BeautifulSoup(mk,”lmxl”) - lmxl的XML解析器
条件:pip install lxml
使用方法:BeautifulSoup(mk,”xml”) - html5lib的解析器
条件:pip install html5lib
使用条件:BeautifulSoup(mk,”html5lib”)
标签的有关元素
Tag标签,最基本的信息组织元素,用<>和</>表明开头和结尾
Name标签的名称,如…的名称就是head
1 | soup.a.name #a |
- Attributes标签的属性,字典类型
1 | soup.a.attrs |
- NavigableString<>…</>中间的字符串
1 | soup.a.string |
- Comment注释类型
遍历HTML的方法
标签数的遍历方式
下行遍历
- contents子节点的列表,将所有子节点存入列表
- children子节点的迭代类型,与contents类似用于遍历子节点
- descendants子孙节点的迭代类型,用于循环遍历
上行遍历
- parent节点的父标签
- parents节点先辈标签的迭代类型,用于遍历
平行遍历
- next_sibling下一个平行节点的标签
- previous_sibling上一平行节点的标签
- next_sblings后续所有平行节点的迭代类型
- previous_sblinga前面所有平行节点的迭代类型
不是同一父节点下的标签不是平行关系
有可能返回的是NavigableString属性,后面会介绍排除的方法
HTML格式输出和编码
- prettify()能够格式化输出Html内容
1 | soup = beautifulsoup("<p>呆呆和甜甜</p>","html.parser") |
<>.find_all()
- 返回的是一个列表
参数
name需要检索的标签名字符串
- 如果是True则打印所有标签
- 要打印多个标签可使用列表
attrs标签属性检索字符串
- 也可以对一个特定的属性值进行检索
要加下划线,如:class_
1 | soup.find_all(id_ = "link") |
recursive 是否对子孙全部检索,默认是True
srting对<>…</>中间的内容进行检索
find——all的简写形式
- () ==.find_all()
- soup() == soup.find_all()
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lilming的编程方舟!
评论
ValineDisqus