Python网络爬虫——Beautiful Soup库

Beautuful Soup库的安装

Beautuful Soup
安装过程不再赘述,直接看官方文档,看不懂直接百度即可。

Beautiful Soup库的基本元素

Beautiful Soup是能够解析HTML和XML文件的功能库

Beautiful Soup库解析器

解析器使用方法条件
bs4的HTML解析器BeautifulSoup(mk, ‘html.parser’)安装bs4库
lxml的HTML解析器BeautifulSoup(mk, ‘lxml’)pip install lxml
bs4的XML解析器BeautifulSoup(mk, ‘xml’)pip install lxml
html5lib的解析器BeautifulSoup(mk, ‘html5lib’)pip install html5lib

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结点先辈标签的迭代类型,用于循环遍历先辈结点
soup = BeautifulSoup(demo, "html.parser")
for parent in soup.a.parents:
    if parent is None:
        print(parent)
    else:
        print(parent.name)
平行遍历
属性说明
.next_sibling返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling返回按照HTML文本顺序的上一个平行节点标签
.next_siblings迭代类型,返回按照HTML文本顺序的后序所有平行节点标签
.previous_siblings迭代类型,返回按照HTML文本顺序的前序所有平行节点标签

所有的平行遍历必须发生在同一个父亲结点下

基于bs4库的HTML格式化

bs4库中提供了prettify()方法

from bs4 import BeautifulSoup
soup = BeautifulSoup(demo, "html.parser")
print(soup.prettify())

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

重点方法:
find_all(name, attrs, recursive, string, **kwargs)
返回一个列表类型,存储查找的结果。

  • name :对标签名称的检索字符串
    soup.find_all('a') 返回所有a标签的
    soup.find_all(['a','b']) 返回所有的a标签和b标签
    for tag in soup.find_all(re.compile('b')) 返回所有的b开头的标签

  • attrs : 对标签属性值的检索字符串,可标注属性检索
    soup.find_all('p','course') 查找p标签中包含course属性值
    soup.find_all('id=link') 查找id属性等于link的值的元素

  • recursive : 是否对子孙全部检索,默认True

  • string : <>...</> 中字符串区域的检索字符串
    soup.find_all(string = "Basic Python") 标签之间字符串为Basic Python的元素

扩展方法:

方法说明
<>.find()搜索且只返回一个结果,字符串类型,同find_all()参数
<>.find_parents()在先辈节点中搜索,返回列表类型,同find_all()参数
<>.find_parent()在先辈中返回一个结果,字符串类型,同find()参数
<>.find_next_siblings()在后续平行节点中搜索,返回列表类型,同find_all()参数
<>.find_next_sibling()在后续平行节点中返回一个结果,字符串类型,同find()参数
<>.find_previous_siblings()在前序平行节点中搜索,返回列表类型,同find_all()参数
<>.find_previous_sibling()在前序平行节点中返回一个结果,字符串类型,同find()参数
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值