BeautifulSoup 庫 & 資訊標記與提取方法
阿新 • • 發佈:2018-11-07
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'))