上集回顧:
上集快速領略了壹下 BeautifulSoup 的大概功能,並學習了如何安裝和構造壹個 BeautifulSoup 對象。
本集學習 BeautifulSoup 的 Tag 及其屬性。
由於HTML和XML是由大量tag組合和嵌套而成,所以檢索目標信息就是檢索目標tag的過程。
壹、Tag對象
Tag 對象與XML或HTML原生文檔中的tag相同:
Tag有很多方法和屬性,其中最重要的屬性是: name和attributes。
二、name屬性
每個tag都有自己的名字,通過 .name 來獲取:
如果改變了tag的name,那將影響所有通過當前Beautiful Soup對象生成的HTML文檔:
三、attributes屬性
壹個tag可能有很多個屬性. tag <b class="boldest"> 有壹個 “class” 的屬性,值為 “boldest” . tag的屬性的操作方法與字典相同:
也可以直接”點”取屬性, 比如: .attrs :
tag的屬性可以被添加,刪除或修改. 再說壹次, tag的屬性操作方法與字典壹樣
四、多值屬性
HTML 定義了壹系列可以包含多個值的屬性。最常見的多值的屬性是 class (壹個tag可以有多個CSS的class). 還有壹些屬性 rel , rev , accept-charset , headers , accesskey 。在Beautiful Soup中多值屬性的返回類型是list:
如果某個屬性看起來好像有多個值,但在任何版本的HTML定義中都沒有被定義為多值屬性,那麽Beautiful Soup會將這個屬性作為字符串返回
將tag轉換成字符串時,多值屬性會合並為壹個值
如果轉換的文檔是XML格式,那麽tag中不包含多值屬性
五、字符串
字符串常被包含在tag內。BeautifulSoup用 NavigableString 類來包裝tag中的字符串:
壹個 NavigableString 字符串與Python中的Unicode字符串相同,通過 unicode() 方法可以直接將 NavigableString 對象轉換成Unicode字符串:
本集總結:
下集見