zoukankan      html  css  js  c++  java
  • pyhon---信息的爬取与提取---bs4,BeautifulSoup,re库

    pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库 用于对获取到的页面文本进行提取

    一、BeautifulSoup库的理解:BeautifulSoup库是解析、遍历、维护"标签树"的功能库。
    二、BeautifulSoup类的基本元素
      1、Tag:标签,最基本的信息组织单元,分别使用<></>标明开头和结尾 多个同类标签只访问第一个标签
        1)Name:标签的名字,<p>...</p>的名字是p,格式:<tag>.name
        2)Attributes :标签的属性,字典形式的组织,格式:<tag>.attrs
        3)NavigableString:标签内非属性字符串,格式:<tag>.string
        4)Comment:标签内字符串的注释部分,一种特殊的Comment类型 用.string注释内容也会显示


    三、基于bs4库的遍历HTML方法:下行遍历,上行遍历,平行遍历
      1、标签树的下行遍历属性:
        1).contents 子结点的列表,将<tag>的所有儿子节点存入列表
        2).children 子节点的迭代类型,与contents类似,用于循环遍历儿子节点 //只能for,in中
        3).descendants 子孙节点的迭代类型,包含所有子孙结点,用于循环遍历
      2、标签树的上行遍历的属性:
        1).parent 节点的父亲标签
        2).parents 节点先辈的迭代类型,用于循环遍历先辈节点
      3、标签的平行遍历属性:(平行遍历发生在同一个父节点下的各节点间)
        1).next_sibling 返回按照HTML文本顺序的下一个平行节点标签
        2).previous_sibling 回按照HTML文本顺序的上一个平行标签
        3).next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
        4).previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

    四、如何将HTML友好的显示:
      bs4库的prettify()方法:
        该函数可在HTML每个标签后加' '
        该函数也可以应用于tag中

    五、信息标记一般类型种类:xml,json,yaml

    六、信息提取的一般方法:
      1、完整解析信息的标记形式,在提取关键信息
      2、无视标记形式,直接搜索信息 对信息的文本查找函数即可
        融合方法:结合形式解析与搜索方法,提取关键字 ...需要标记解析器及文本查找函数

    七、beautifulsoup库对象的查找函数:
      1、find_all(name,attrs,recursive,string,**kwargs) 返回一个列表类型,存储查找的结果
        参数:name:对标签名称的检索字符串,可以使用列表查找多个标签,find_all(true)所有标签
           attrs:对标签属性值的检索字符串,可标注属性检索 例如find_all('a','href')
           recursive:是否对子孙所有节点搜索,默认值为true,false则值查找当前节点儿子的信息    
           string:<></>中字符串区域的检索字符串

      <tag>(..)等价于<tag>.find_all(...)
      soup(..)等价于soup.find_all(..)

      2、拓展方法(参数均与find_all()相同)
        find() 搜索且返回一个结果,字符串类型
        find_parents() 在先辈节点中搜索,返回一个列表类型
        find_parent() 在先辈节点中返回一个结果,字符串类型
        find_next_siblings() 在后续平行节点搜索,返回列表类型
        find_next_sibling()
        find_previous_siblings()
        find_previous_sibling() 在前序平行节点中返回一个结果,字符串类型

    八、正则表达式:通用的字符串表达框架,判断某字符串的特征归属,用来简洁表达一组字符串的方式
       一般用于表达文本类型特征
       同时查找或替换一组字符串

        匹配字符串的全部或部分(主要)

    九、正则表达式的使用:

      编译:将符合正则表达式语法的字符串转换正则表达式特征

      正则表达式的语法:由字符与操作符组成

      

    十、正则表达式类型
        raw string(原生字符串类型:不包含转义字符的字符串) 表示为 r'text'
        string 类型

    十一、Re库 主要用于字符串匹配

    十二、Re库的主要功能函数
      re.search(pattern,string,flag=0)在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
      re.match() 在一个字符串的开始位置起匹配正则表达式,返回match对象 注意match为空
      re.findall()搜索字符串,一列表类型返回全部能匹配的子串
      re.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
      re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
      re.sub()在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

      re.compile(pattern,flags) 将正则表达式的字符串形式编译成正则表达式对象

    十三、match对象
      1、属性
        1)string 待匹配文本
        2)re 匹配时使用的pattern对象(正则表达式)
        3)pos 正则表达式搜索文本的开始位置
        4)endpos 正则表达式搜索文本的结束为止
      2、方法
        1).group(0) 获得匹配后的字符串
        2).start() 匹配字符串在原始字符串的开始位置
        3).end() 匹配字符串在原始字符串的结束位置
        4).span() 返回(.start(),.end())元组类型

  • 相关阅读:
    【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系
    【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号
    linux查看文件前几行和后几行的命令
    iphone订阅服务在那里取消
    idea 默认全局配置maven,避免每次新建项目都需要指定自己的maven目录
    Java:session中的invalidate()的作用是什么呢?求解
    SESSION.INVALIDATE()
    Session中清除对象方法比较
    linux--Linux 各目录及每个目录的详细介绍
    Linux 下各个目录的作用及内容
  • 原文地址:https://www.cnblogs.com/z-bear/p/7955932.html
Copyright © 2011-2022 走看看