爬蟲2解析HTML頁面-第三方庫Beautiful Soup
1.安裝BeautifulSoup–pip install beautifulSoup4
Beautiful Soup庫也叫beautifulsoup4或bs4
2.解析demo頁面
import requests
r=requests.get(“http://python123.io/ws/demo.html”)
demo=r.text
from bs4 import BeautifulSoup 從bs4庫中引入BeautifulSoup 型別
(也可以直接寫import bs4)
soup=BeautifulSoup(demo,“html.parser”)
demo頁面內容,html.parser指用的解析器
demo的位置也可以寫open("/root/demo.html")
soup為 解析後得到頁面中所有的標籤
soup.title----結果為
tag=soup.a(獲取第一個a標籤) —tag結果為 Basic Python
soup.a.name----‘a’
soup.a.parent.name—‘p’
soup.a.parent.parent.name-----‘body’
獲取標籤內所有屬性–soup.a.attrs—{‘class’:’…’,‘id’:’…’,‘href’:’…’}
獲取標籤內某一個屬性soup.a.attrs[‘class’]
獲取標籤屬性是型別type(soup.a.attrs)-----<class’dict’>
獲取標籤型別type(soup.a)----<class ‘bs4.element.Tag’>
獲取標籤中的內容soup.a.string’Basic Python’
3.Beautiful Soup庫理解
此庫是解析,遍歷,維護“標籤樹”的功能庫
4.Beautiful Soup庫的解析器
①安裝bs4庫–使用bs4的html解析器BeautifulSoup(demo,“html.parser”)
②安裝lxml–使用lxml的html解析器BeautifulSoup(demo,“lxml”)
③安裝lxml–使用lxml的xml解析器BeautifulSoup(demo,“xml”)
④安裝html5lib–使用html5lib的解析器BeautifulSoup(demo,“html5lib”)
5.Beautiful Soup類的基本元素
6.基於bs4的HTML標籤樹的遍歷
①下行遍歷
.contents子節點的列表,將所有兒子節點存入列表
.children子節點的迭代型別,與.contents類似,用於迴圈遍歷兒子節點
.descendants子節點的迭代型別,包含所有子孫節點,用於迴圈遍歷
②上行遍歷
.parent節點的父親標籤
.parents節點先輩標籤的迭代型別,用於迴圈遍歷先輩節點
③平行遍歷(平行遍歷發生在同一個父節點下的各節點間)
.next_sibling返回按照HTML文字順序的下一個平行節點標籤
.previous_sibling返回按照HTML文字順序的上一個平行節點標籤
.next_siblings迭代型別,返回按照HTML文字順序的後續所有平行節點標籤
.previous_siblings返回按照HTML文字順序的前續所有平行節點標籤
7.基於bs4的HTML格式化和編碼(bs4會自動將HTML頁面和字串轉成utf-8編碼)
soup.a.prettify()-----prettify會自動加換行符,使格式完美