pyhont---信息的爬取與提取---bs4,BeautifulSoup,re庫
pyhont---信息的爬取與提取---bs4,BeautifulSoup,re庫 用於對獲取到的頁面文本進行提取
BeautifulSoup庫的理解:BeautifulSoup庫是解析、遍歷、維護"標簽樹"的功能庫。
BeautifulSoup類的基本元素
Tag:標簽,最基本的信息組織單元,分別使用<></>標明開頭和結尾 多個同類標簽只訪問第一個標簽
Name:標簽的名字,<p>...</p>的名字是p,格式:<tag>.name
Attributes :標簽的屬性,字典形式的組織,格式:<tag>.attrs
NavigableString:標簽內非屬性字符串,格式:<tag>.string
Comment:標簽內字符串的註釋部分,一種特殊的Comment類型 用.string註釋內容也會顯示
///////
基於bs4庫的遍歷HTML方法:
下行遍歷,上行遍歷,平行遍歷
標簽樹的下行遍歷屬性:
.contents 子結點的列表,將<tag>的所有兒子節點存入列表
.children 子節點的叠代類型,與contents類似,用於循環遍歷兒子節點 //只能for,in中
.descendants 子孫節點的叠代類型,包含所有子孫結點,用於循環遍歷
標簽樹的上行遍歷的屬性:
.parent 節點的父親標簽
.parents 節點先輩的叠代類型,用於循環遍歷先輩節點
標簽的平行遍歷屬性:(平行遍歷發生在同一個父節點下的各節點間)
.next_sibling 返回按照HTML文本順序的下一個平行節點標簽
.previous_sibling 回按照HTML文本順序的上一個平行標簽
.next_siblings 叠代類型,返回按照HTML文本順序的後續所有平行節點標簽
.previous_siblings 叠代類型,返回按照HTML文本順序的前續所有平行節點標簽
////////
////////
如何將HTML友好的顯示:
bs4庫的prettify()方法:
該函數可在HTML每個標簽後加‘\n‘
該函數也可以應用於tag中
////////
////////
信息標記一般類型種類:xml,json,yaml
信息提取的一般方法:
1、完整解析信息的標記形式,在提取關鍵信息
2、無視標記形式,直接搜索信息 對信息的文本查找函數即可
融合方法:結合形式解析與搜索方法,提取關鍵字 ...需要標記解析器及文本查找函數
///////
///////
beautifulsoup庫對象的查找函數:
find_all(name,attrs,recursive,string,**kwargs) 返回一個列表類型,存儲查找的結果
參數:name:對標簽名稱的檢索字符串,可以使用列表查找多個標簽,find_all(true)所有標簽
attrs:對標簽屬性值的檢索字符串,可標註屬性檢索 例如find_all(‘a‘,‘href‘)
recursive:是否對子孫所有節點搜索,默認值為true,false則值查找當前節點兒子的信息
string:<></>中字符串區域的檢索字符串
<tag>(..)等價於<tag>.find_all(...)
soup(..)等價於soup.find_all(..)
拓展方法(參數均與find_all()相同)
find() 搜索且返回一個結果,字符串類型
find_parents() 在先輩節點中搜索,返回一個列表類型
find_parent() 在先輩節點中返回一個結果,字符串類型
find_next_siblings() 在後續平行節點搜索,返回列表類型
find_next_sibling()
find_previous_siblings()
find_previous_sibling() 在前序平行節點中返回一個結果,字符串類型
/////////
正則表達式:通用的字符串表達框架,判斷某字符串的特征歸屬,用來簡潔表達一組字符串的方式
一般用於表達文本類型特征
同時查找或替換一組字符串
匹配字符串的全部或部分(主要)
正則表達式的使用:
編譯:將符合正則表達式語法的字符串轉換正則表達式特征
正則表達式的語法:由字符與操作符組成
正則表達式類型
raw string(原生字符串類型:不包含轉義字符的字符串) 表示為 r‘text‘
string 類型
Re庫 主要用於字符串匹配
Re庫的主要功能函數
re.search(pattern,string,flag=0)在一個字符串中搜索匹配正則表達式的第一個位置,返回match對象
re.match() 在一個字符串的開始位置起匹配正則表達式,返回match對象 註意match為空
re.findall()搜索字符串,一列表類型返回全部能匹配的子串
re.split()將一個字符串按照正則表達式匹配結果進行分割,返回列表類型
re.finditer() 搜索字符串,返回一個匹配結果的叠代類型,每個叠代元素是match對象
re.sub()在一個字符串中替換所有匹配正則表達式的子串,返回替換後的字符串
re.compile(pattern,flags) 將正則表達式的字符串形式編譯成正則表達式對象
match對象
屬性
string 待匹配文本
re 匹配時使用的pattern對象(正則表達式)
pos 正則表達式搜索文本的開始位置
endpos 正則表達式搜索文本的結束為止
方法
.group(0) 獲得匹配後的字符串
.start() 匹配字符串在原始字符串的開始位置
.end() 匹配字符串在原始字符串的結束位置
.span() 返回(.start(),.end())元組類型
pyhont---信息的爬取與提取---bs4,BeautifulSoup,re庫