1. 程式人生 > >BeautifulSoup 庫 & 資訊標記與提取方法

BeautifulSoup 庫 & 資訊標記與提取方法

from bs4 import BeautifulSoup
import requests

soup = BeautifulSoup('<p>data</p>', 'html.parser')


'''
===BeautifulSoup類的基本元素 
<p class=“title”> … </p>
基本元素            說明 
Tag             標籤,最基本的資訊組織單元,分別用<>和</>標明開頭和結尾 
Name            標籤的名字,<p>…</p>的名字是'p',格式:<tag>.name 
Attributes      標籤的屬性,字典形式組織,格式:<tag>.attrs 
NavigableString 標籤內非屬性字串,<>…</>中字串,格式:<tag>.string 
Comment         標籤內字串的註釋部分,一種特殊的Comment型別
'''
''' ===bs4庫的遍歷功能 .contents .children .descendants 下行遍歷 .parent .parents 上行遍歷 .next_sibling .previous_sibling .next_siblings .previous_siblings 平行遍歷 ''' ''' HTML基本格式 <html> <head> <body> <title> <p> <p> <b> <a> <a> <>…</> 構成了所屬關係,形成了標籤的樹形結構 '''
# ===資訊標記與提取方法 ''' ===三種形式 ==XML <person> <firstName>Jiawei</firstName> <lastName>Yan</lastName> <address> <streetAddr>江夏區藏龍島</streetAddr> <city>武漢市</city> <zipcode>430205</zipcode> </address> <prof>Finance</prof><prof>Innovation</prof> </person> ==JSON { “firstName”:“Jiawei”, “lastName” :“Yan”, “address” :{ “streetAddr” :“江夏區藏龍島”, “city” :“武漢市”, “zipcode” :“430205” }, “prof” :[ “Finance”,“Innovation”] } ==YAML firstName:Jiawei lastName :Yan address : streetAddr :江夏區藏龍島 city :武漢市 zipcode :430205 prof : ‐Finance ‐Innovation ===比較 XML 最早的通用資訊標記語言,可擴充套件性好,但繁瑣 Internet上的資訊互動與傳遞 JSON 資訊有型別,適合程式處理(js),較XML簡潔 移動應用雲端和節點的資訊通訊,無註釋 YAML 資訊無型別,文字資訊比例最高,可讀性好 各類系統的配置檔案,有註釋易讀 '''
''' ===方法 方法一:完整解析資訊的標記形式,再提取關鍵資訊 XML JSON YAML 需要標記解析器,例如:bs4庫的標籤樹遍歷 優點:資訊解析準確 缺點:提取過程繁瑣,速度慢 方法二:無視標記形式,直接搜尋關鍵資訊 搜尋 對資訊的文字查詢函式即可 優點:提取過程簡潔,速度較快 缺點:提取結果準確性與資訊內容相關 ''' # <>.find_all(name, attrs, recursive, string, **kwargs) # name : 對標籤名稱的檢索字串 # attrs: 對標籤屬性值的檢索字串,可標註屬性檢索 # recursive: 是否對子孫全部檢索,預設True # string: <>…</>中字串區域的檢索字串 for link in soup.find_all('a'): print(link.get('href'))