zoukankan      html  css  js  c++  java
  • 信息标记

    HTML的信息标记:HTML通过预定义的<>...</>标签形式组织不同类型的信息
    信息标记的三种形式:XML,JSON,YAML
    XML

     

     

     JSON

    subkey如下所示:

    JSON实例

    YMAL

     

     

     YMAL: 多行文本

     总结来说有以下几种

    YMAL实例

    三种信息标记形式的比较 
    XML 最早的通用信息标记语言,可扩展性好,但繁琐;Internet上的信息交互于传递
    JSON 信息有类型,适合程序处理(js),较XML简洁;移动应用云端和节点的信息通信,无注释
    YAML 信息无类型,文本信息比例最高,可读性好;各类系统的配置文件,有注释易读
     
    信息提取的一般方法 
    方法一:完整解析信息的标记形式,再提取关键信息
    需要标记解析器 例如:bs4库的标签树遍历
    优点:信息解析准确
    缺点:提取过程繁琐,速度慢
    方法二:无视标记形式,直接搜索关键信息对信息的文本查找函数即可
    优点:提取过程简洁,速度较快
    缺点:提取结果准确性与信息内容相关 
    融合方法:结合形势解析与搜索方法,提取关键信息
    需要标记解析器及文本查找函数
     
     
    实例:提取HTML中所有的URL链接
    思路:
    1)搜索到所有<a>标签
    2)解析<a>标签格式,提取href后的链接内容
    import requests
    from bs4 import BeautifulSoup
    
    kv = {'user-agent':'Mozilla/5.0'}
    url = "https://python123.io/ws/demo.html"
    r = requests.get(url,headers = kv)
    # print(r.status_code)
    demo = r.text
    soup = BeautifulSoup(demo,"html.parser")
    for link in soup.find_all('a'):
         print(link.get('href'))

    基于bs4库的HTML内容查找方法
    <>.find_all(name, attrs, recursive, string, **kwargs)
    返回一个列表类型,存储查找的结果
    name:对标签名称的检索字符串 soup.find_all(['a','b'])
    print(soup.find_all('a'))
    print(soup.find_all(['a','b']))

    for  tag in soup.find_all(True):
         print(tag.name) #输出所有标签的名字

    import re #re :正则表达式
    for
    tag in soup.find_all(re.compile('b')):#找出所有以b开头的tag print(tag.name)

    attrs:对标签属性值的检索字符串,可标注属性检索
    print(soup.find_all('p','course'))
    print(soup.find_all(id='link1'))

    print(soup.find_all(id='link'))
    []  #不存在
     
    print(soup.find_all(id = re.compile('link')))

    recursive:是否对子孙全部检索,默认True,False:只查询根节点的儿子节点,不在往下查询
    print(soup.find_all('a'))

    print(soup.find_all('a',recursive = False))

    []

    string:<>...</>中字符串区域的检索字符串 
    <tag>(...) 等价于 <tag>.find_all(...) soup(...) 等价于 soup.find_all(...) 
    print(soup) #全部
    print(soup.find_all(string = "Basic Python"))
    print(soup.find_all(string = re.compile("Python")))#所有包含Python的
    print(soup(string = "Basic Python")) 
    等价于
    print(soup.find_all(string = "Basic Python"))

     

  • 相关阅读:
    UniGui使用IconFont图标(新)
    uniGUI uniEdit回车键处理遇到的问题
    War包的目录结构
    FAT32和NTFS最大支持的单个文件大小分别是多大?
    释放 MappedByteBuffer映射的内存
    C#基础篇 正则表达式入门
    JAVA获取文件MD5值
    C#正则表达式语法规则详解
    MD5加密算法原理及实现
    Java 文件名操作的相关工具类 & Java中windows路径转换成linux路径等工具类
  • 原文地址:https://www.cnblogs.com/tingtin/p/12913455.html
Copyright © 2011-2022 走看看