一、資訊标記的三種形式
XML格式資料
JSON格式資料
YAML格式資料
二、資訊标記形式的比較
XML
最早的通用資訊标記語言,可擴充性好,但繁瑣。
Internet上的資訊互動與傳遞
JSON
資訊有類型,适合程式處理(js),較XML簡潔
移動應用雲端和節點的資訊通信,無注釋、
YAML
資訊無類型,文本資訊比例最高,可讀性好
各類系統的配置檔案,有注釋易讀
三、資訊提取的一般方法
方法一:
完整解析資訊的标記形式,再提取關鍵資訊
XML JSON YAML
需要标記解析器,例如:bs4庫的标簽樹周遊
優點:資訊解析準确
缺點:提取過程繁瑣,速度慢
方法二:
無視标記形式,直接搜尋關鍵資訊
搜尋
對資訊的文本查找函數即可
優點:提取過程簡潔,速度較快
缺點:提取結果準确性與資訊内容相關
融合方法:
融合方法:結合形式解析與搜尋方法,提取關鍵資訊
XML JSON YAML 搜尋
需要标記解析器及文本查找函數
執行個體:
提取HTML中所有URL連結
思路:
搜尋到所有标簽
解析标簽格式,提取href後的連結内容
import requests
r = requests.get("http://www.baidu.com") # 得到response響應資料
r.encoding = r.apparent_encoding # 指定字元編碼
demo = r.text
import bs4
# 制作soup
soup = bs4.BeautifulSoup(demo,"html.parser") # 要解析的内容,html解析器
# 提取連結内容
for link in soup.find_all("a"):# 查找所有a标簽,并周遊
print(link.get("href")) # 标簽類型,搜尋href标簽後的連結内容
四、基于bs4庫的HTML内容查找方法
<>.find_all(name,attrs,recursive, string, **kwargs) 方法:
傳回一個清單類型,存儲查找的結果
name : 對标簽名稱的檢索字元串
attrs: 對标簽屬性值的檢索字元串,可标注屬性檢索
recursive: 是否對子孫全部檢索,預設True
string: <>…>中字元串區域的檢索字元串
擴充方法
方法
說明
<>.find()
搜尋且隻傳回一個結果,同.find_all()參數
<>.find_parents()
在先輩節點中搜尋,傳回清單類型,同.find_all()參數
<>.find_parent()
在先輩節點中傳回一個結果,同.find()參數
<>.find_next_siblings()
在後續平行節點中搜尋,傳回清單類型,同.find_all()參數
<>.find_next_sibling()
在後續平行節點中傳回一個結果,同.find()參數
<>.find_previous_siblings()
在前序平行節點中搜尋,傳回清單類型,同.find_all()參數
<>.find_previous_sibling()
在前序平行節點中傳回一個結果,同.find()參數
總結: