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()

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM