1. 程式人生 > >學習筆記2018.1.9

學習筆記2018.1.9

Beautiful Soup庫解析器
解析器	使用方法	條件
bs4的HTML解析器: BeautifulSoup(mk,’html.parser’)  安裝bs4庫
lxml的HTML解析器: BeautifulSoup(mk,’lxml’)         pip install lxml
lxml的XML解析器:  BeautifulSoup(mk,’xml’)	 pip install lxml
html5lib的解析器:	BeautifulSoup(mk,’html5lib’)	pip install html5lib
 
Beautiful Soup類的基本元素:
Tag  標籤,最基本的資訊組織單元,分別用<>和</>標明開頭和結尾
Name  標籤的名字,<p>...</p>的名字是’p’,格式:<tag>.name
Attributes  標籤的屬性,字典形式組織,格式:<tag>.attrs
NavigableString  標籤內非屬性字串,<>...</>中字串,格式:<tag>.string
Comment  標籤內字串的註釋部分,一種特殊的Comment型別


 

 

標籤樹的下行遍歷
.contents  子結點的列表,將<tag>所有兒子節點存入列表
.children  子結點的迭代型別,與.coontents類似,用於迴圈遍歷兒子節點
.descendants  子孫節點的迭代型別,包含所有子孫節點,用於迴圈遍歷
標籤樹的上行遍歷
.parent  節點的父親標籤
.parents  節點先輩標籤的迭代型別,用於迴圈遍歷先輩節點
 
標籤樹的平行遍歷
.next_sibling  返回按照HTML文字順序的下一個平行節點標籤
.previous_sibling  返回按照HTML文字順序的上一個平行節點標籤
.next_siblings  迭代型別,返回按照HTML文字順序的後續所有平行節點標籤
.previous_sibling  迭代型別,返回按照HTML文字順序的前續所有平行節點標籤
 
平行遍歷需要發生在同一個父點下的各節點間
.prettify()為HTML文字<>及其內容增加更加’\n’
.prettify()可用於標籤,方法:<tag>.prettify()
bs4庫將任何HTML輸入都變成utf-8編碼
 
HTML:Hyper Text Markup Language
 
<>.find_all(name,attrs,recursive,string,**kwargs)
name:對標籤名稱的檢索字串
attrs:對標籤屬性值的檢索字串,可標註屬性檢索
recursive:是否對子孫全部檢索,預設True
string:<>...</>中字串區域的檢索字串
 
<tag>(..) 等價於 <tag>.find_all(..)
Soup(..) 等價於 soup.find_all(..)
 
<>.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()引數


 

 

中文對齊問題的原因:
當中文字元寬度不夠時,採用西文字元填充;中西文字元佔用寬度不同。
解決方法:
採用中文字元的空格填充chr(12288)

此後跟著步驟做了一個爬取資訊的爬蟲


複習去了= =