python关于信息标记的三种形式

1,  信息标记的目的:

    1.1  信息结构增强,信息维度增加;

    1.2  信息内容易于通信,存储,理解,应用; 

2,信息标记的三种形式:

    2.1  XML:extensible Markup Language,扩展标记语言;

            2.1.1  形式:是一种以标签来标记信息的形式,基于HTML语言后发展出的通用形式;

            2.1.2  目的:主要用于Internet上的信息交互与传递;

            2.1.3  特点:最早的信息标记语言,可扩展性好,但繁琐;

            2.1.4  语法:<name  attrs='sth'  attrs1='sth'>...NavigibleString...</name>

                                 <!--  comment  -->

                                 </name> 

    2.2  JSON:JavaScript Object Notation,

            2.2.1  形式:有类型的键值对(用双引号标记信息类型)构建的信息表达形式;

            2.2.2  目的:主要用于移动应用云端和节点的信息通信,比如程序的接口处理时;

            2.2.3  特点:信息有类型,面向对象,有JS语言扩展出的标记形式,适合程序处理,无注释;

            2.2.4  语法:(1) 正常键值对   "key" : "value"  

                                 (2) 多值键值对   "key" : [ "value1" , "value2" ] 

                                 (3) 嵌套键值对   "key" : { "subkey1":"subvalue1" , "subkey2":"subvalue2" }

                                 键常指类的名字,值如果是数字则可以省略双引号;

    2.3  YAML: Ain't Markup Language,无类型键值对标记语言;(起初叫做Yet Another Markup Language)

            2.3.1  形式:无类型的键值对构建信息的表达形式;

            2.3.2  目的:用于各类系统的配置文件;

            2.3.3  特点:信息无类型,文本信息比例高,有注释可读性好;

            2.3.4  语法:(1)用缩进格式表达所属关系:key:

                                                                                subkey1:subvalue1

                                                                                subkey2:subvalue2

                                 (2)用并列格式表达并列关系:key:

                                                                                       value1

                                                                                       value2

                                 (3)用 | 表示数据是块数据,#表示注释: key :|          #comment

                                                                                                 .......

3,信息提取的三种一般方法:

    3.1  形式解析:完整解析信息的标记形式,再提取关键信息;

            3.1.1 特点:需要使用标记解析器,例如bs4库的标签树遍历;

    3.2  搜索解析:无视标记信息,直接搜索关键信息;

            3.2.1 特点:需要使用文本查找函数;

    3.3  综合解析:结合形式解析与搜索解析,再提取关键信息;

           3.3.1 特点:需要使用标记解析器与文本查找函数;

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

    4.1  soup.find_all(name,attrs,recursive,string,**kwargs)

            4.1.1 意义:通过参数 搜索对象中(使用soup变量表示对象)相应的信息,以列表形式返回查找结果;

            4.1.2 soup.find_all('name') :以列表形式返回所有的name标签;

                     soup.find_all( [ 'name1' , 'name2' ] ) : 以列表形式返回所有的name1标签和name2标签;

            4.1.3 soup.find_all( 'name','attrs_value') :以列表形式返回name标签中属性值包含sttrs_value的所有标签;

                      soup.find_all(id='value1') :以列表形式返回id属性中值为value1的所有标签;  

            4.1.4 soup.find_all('name',recursive=True) :默认为True,表示默认对soup对象的子孙节点进行搜索;False表示只搜索soup对象的子节点;

            4.1.5 soup.find_all(string="Data") :以列表形式返回包含Data的所有NavigibleString元素;

            4.1.6 以下七种扩展方法与soup.find_all()方法具有相同语法:

                     (1)soup.find() :以字符串形式返回一个搜索结果;

                     (2)soup.find_parent() :以字符串形式返回一个父辈节点中的搜索结果;

                     (3)soup.find_next_sibling() :以字符串形式返回一个后序平行节点中的搜索结果;

                     (4)soup.find_previous_sibling() :以字符串形式返回一个前序平行节点中的搜索结果;

                     (5)soup.find_parents() :以列表形式返回先辈节点中的所有搜索结果;

                     (6)soup.find_next_siblings() :以列表形式返回后序平行节点中的所有搜索结果;

                     (7)soup.find_previous_siblings() :以列表形式返回前序平行节点中的所有搜索结果;

             4.1.7 name()等价于name.find_all()

    

原文地址:https://www.cnblogs.com/caesura-k/p/9669502.html