• Python爬虫解析器BeautifulSoup4


    在这里插入图片描述 

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

    学习日记

    目录

    学习日记

    一、BeautifulSoup4概述

    1、BeautifulSoup4概念总结

    2、BeautifulSoup4使用对象

    3、安装和导入

    4、解析库

    二、遍历文档树

    1、contents

    2、children 

    三、搜索文档树

    1、find_all()方法

    2、find()方法

    3、CSS选择器筛选

    四、基本使用

    1、基本使用

    ​2、标签选择器

     3、获取名称

    4、获取属性

    5、 获取内容

    6、嵌套选择

    7、子节点和子孙节点

    8、获取父节点和祖先节点

    9、获取兄弟节点


    一、BeautifulSoup4概述

    BeautifulSoup是python解析html非常好用的第三方库

    1、BeautifulSoup4概念总结

    BeautifulSoup库也称bs4库,是Python用于网页分析的第三方库,用来快速转换被抓取的网页。
    BeautifulSoup可以把网页转换为一颗DOM树。
    BeautifulSoup提供一些简单的方法以及类Python语法来查找、定位、修改一棵转换后的DOM树,还能自动将送进来的文档转换为Unicode编码。
    BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。
    它通过转换器实现文档导航,查找,修改文档的方式。

    2、BeautifulSoup4使用对象

            BeautifulSoup将HTML文档转换成一个树形结构,每个结点都是对象,可以归纳为4种类型:Tag、NavigableString、BeautifulSoup、Comment
    Tag,HTML中的一个标签。
    NavigableString,用于操纵标签内部的文字,标签的string属性返回NavigableString对象
    BeautifulSoup,表示的是一个文档的全部内容,大部分时候可以把它看作是一个特殊的Tag。
    Comment,一个特殊类型的NavigableSting对象,它的内容不包括注释符号。

    3、安装和导入

    win+r+cmd

    pip install beautifulsoup4  

     

    form bs4 import BeautifulSoup

    4、解析库

     

    二、遍历文档树

    1、contents

    获取Tag的所有子节点,返回一个list 

    1. # tag的.content 属性可以将tag的子节点以列表的方式输出
    2. print(bs.head.contents)
    3. print(bs.head.contents[1])

    2、children 

    获取Tag的所有子节点,返回一个生成器

    1. for child in bs.body.children:
    2. print(child)

    三、搜索文档树

    1、find_all()方法

    搜索Tag的所有子结点

     find_all(name,attrs,recursive,text,**kwargs)

    name:名字为name的标签。

    attrs:按照Tag标签属性值检索,采用字典形式。
    recursive:如果只想搜索Tag的直接子结点,可以使用参数recursive=False。
    text:通过text参数可以搜索文本字符中内容。 limit:限制返回结果的数量。

    2、find()方法

    find()返回符合条件的第一个Tag,参数含义与find_all()方法相同

    find(name,attrs,recursive,text)


    即当我们要取一个值的时候就可以用这个方法

    1. t = bs.div.div
    2. # 等价于
    3. t = bs.find("div").find("div")

    3、CSS选择器筛选

    CSS的选择器用于选择网页元素。在bs4中,也可以利用类似的方法来筛选元素。

    soup.select()

    返回类型是列表

    通过标签名查找

    1. print(bs.select('title'))
    2. print(bs.select('a'))

    通过类名查找

    print(bs.select('.mnav'))

    通过id查找

    print(bs.select('#u1'))

    获取内容

    1. t_list = bs.select("title")
    2. print(bs.select('title')[0].get_text())

    四、基本使用

    1、基本使用

    1. from bs4 import BeautifulSoup #导入BeautifulSoup4库
    2. soup = BeautifulSoup("hello python") #得到文档的对象
    3. print(soup)

    结果:

    hello python

    1. from bs4 import BeautifulSoup
    2. soup = BeautifulSoup(html,'lxml')#设置解析器,传递需要解析的html文档
    3. soup.prettify()#格式化代码
    4. soup.title.string#查看title标签内的文本

    ​2、标签选择器

    1. soup.title#返回title标签
    2. type(soup.title) #返回一个类变量
    3. soup.head#返回head标签
    4. soup.p#返回p标签,只返回第一个p标签,如果有多个只能输出第一个

     3、获取名称

    soup.title.name  #返回title 最外层标签的名称

    4、获取属性

    1. html = '''

      paragraph

      '''
    2. from bs4 import BeautifulSoup
    3. soup = BeautifulSoup(html,'lxml')
    4. soup.p.attrs['name'] #返回a
    5. soup.p['name']] #返回结果同上

    5、 获取内容

    1. html = '''

      paragraph

      '''
    2. from bs4 import BeautifulSoup
    3. soup = BeautifulSoup(html,'lxml')
    4. soup.p.string #返回paragraph

    6、嵌套选择

    1. html = '''

      paragraph

      '''
    2. from bs4 import BeautifulSoup
    3. soup = BeautifulSoup(html,'lxml')
    4. soup.head.p.string #返回paragraph
    5. soup.head.p.attrs['name'] # 返回a

    7、子节点和子孙节点

    1. html = '''

      paragraph

      '''
    2. from bs4 import BeautifulSoup
    3. soup = BeautifulSoup(html,'lxml')
    4. soup.head.contents #返回所有子节点列表
    5. the = soup.head.children
    6. for i,children in enumerate(the):
    7. print(i,children) # 返回一个iterable 必须使用for循环遍历出来
    8. soup.head.descendants #获取所有的子孙节点,返回类型是iterable object

    8、获取父节点和祖先节点

    1. soup.a.parent #获取并输出父节点全部内容
    2. soup.a.parents #获取祖先节点

    9、获取兄弟节点

    1. soup.a.next_siblings
    2. soup.a.previous_siblings

  • 相关阅读:
    迅为RK3568开发板Android12 系统功能测试-有线网测试
    计算机毕业设计ssm大学生比赛信息管理系统38iiq系统+程序+源码+lw+远程部署
    Tensor Core的WMMA API编程入门
    Linux课程四课---Linux开发环境的使用(gcc/g++编译器的相关)
    数据结构题目收录(二十四)
    Python常用的第三方库----requests
    uni-app基于vite和vue3创建并集成pinia实现数据持久化
    MySQL
    PHP命令行脚本接收传入参数的三种方式
    JSP:Javabean
  • 原文地址:https://blog.csdn.net/m0_63794226/article/details/126399123