Python-Beautiful Soup库

Beautiful Soup库,也叫beautifulsoup4或bs4

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了.Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
 

 Beautiful Soup库

Beautiful Soup库
解析器使用方法安装条件
bs4HTML解析器BeautifulSoup(mk, 'html.parser')安装bs4
lxmlHTML解析器BeautifulSoup(mk, 'lxml')pip install lxml
lxmlXML解析器BeautifulSoup(mk, 'xml')pip install lxml
html5lib的解析器BeautifulSoup(mk, 'html5lib')pip install html5lib

Beautiful Soup类的基本元素

Beautiful Soup类的基本元素
基本元素
说明
Tag
标签,最基本的信息组织单元,分别用 <> </> 标明开头和结尾
Name
标签的名字, <p>...</p> 的名字是 'p' ,格式: <tag>.name
Attributes
标签的属性,字典形式组织,格式: <tag>.attrs
NavigableString

标签内非属性字符串,<>...</>中字符串,格式:<tag>.string

Comment
标签内字符串的注释部分,一种特殊的 Comment 类型

基于bs4库的HTML内容遍历方法

  • 标签树的下行遍历:

属性说明
.contents
子节点的列表,将 <tag> 所有儿子节点存入列表
.children
子节点的迭代类型,与 .contents 类似,用于循环遍历儿子节点
.descendants
子孙节点的迭代类型,包含所有子孙节点,用于循环遍历
  • 标签树的上行遍历:

属性说明
.parent节点的父亲节点
.parents节点先辈标签的迭代类型,用于循环遍历先辈的节点
  • 标签树的平行遍历:

属性说明
.next_sibling
返回按照 HTML 文本顺序的下一个平行节点标签
.previous_sibling
返回按照 HTML 文本顺序的上一个平行节点标签
.next_siblings
迭代类型,返回按照 HTML 文本顺序的后续所有平行结点标签
.previous_siblings
迭代类型,返回按照 HTML 文本顺序的前续所有平行节点标签

基于bs4库的HTML内容查找方法

<>.find_all(name, attrs, recursive, string, **kwargs) 返回一个列表类型,存储查找的结果

name :对标签名称的检索字符串 soup.find_all(['a','b'])
attrs :对标签属性值的检索字符串,可标注属性检索 soup.find_all('p', 'course')  soup.find_all(id='link1')
recursive :是否对子孙全部检索,默认 True soup.find_all('a', recursive=False)
string <>...</> 中字符串区域的检索字符串 soup.find_all(string = re.compile('python'))
<tag>(...) 等价于 <tag>.find_all(...) soup(...) 等价于 soup.find_all(...)
方法
说明
<>.find()
搜索且只返回一个结果,字符串类型,同 .find_all() 参数
<>.find_parents()
在先辈节点中搜索,返回列表类型,同 .find_all() 参数
<>.find_parent()
在先辈节点中返回一个结果,字符串类型,同 .find_all() 参数
<>.find_next_siblings()
在后续平行节点中搜索,返回列表类型,同 .find_all() 参数
<>.find_next_sibling()
在后续平行节点中返回一个结果,字符串类型,同 .find_all() 参数
<>.find_previous_siblings()
在前序平行节点中搜索,返回列表类型,同 .find_all() 参数
<>.find_previous_sibling()
在前序平行节点中返回一个结果,字符串类型,同 .find_all() 参数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值