Beautiful Soup庫的使用(學習筆記)
Beautiful Soup庫的簡介
BeautifulSoup庫是解析、遍歷、維護“標籤樹”的功能庫。
可以說BeautifulSoup類對應一個HTML/XML文件的全部內容。
Beautiful Soup庫安裝
只需執行:pip install beautifulsoup4
小測試:
1.先用爬蟲爬下來一個網頁:
import requests
r = requests.get("http://python123.io/ws/demo.html")
r.text
2. 將網頁的內容作為引數傳給demo
demo = r.text
from bs4 import BeautifulSoup
soup = BeautifulSoup(demo,"html.parser") #html.parser是HTML解析器,用來解析demo
print(soup.prettify()) #列印出來,檢視解析是否正確
安裝成功!
BeautifulSoup庫的使用:(注意大小寫)
from bs4 import BeautifulSoup #引用BeautifulSoup庫
soup = BeautifulSoup('<p> data</p>','html.parser')
soup2 = BeautifulSoup(open("D://demo.html"),"html.parser")#通過開啟檔案的方式
BeautifulSoup庫的基本元素
Beautiful Soup庫解析器
在這裡插入圖片描述
其實哪種解析器都可以有效解析HTML和xml
基本元素
獲得Tag標籤的基本方法
- 獲得HTML中標籤裡的內容:
soup.title
或者通過:tag = soup.title
然後tag
效果一樣
要以字串的形式輸出標籤裡的內容則:soup.title.string
- 獲取標籤的名字:
soup.a.name
獲取標籤父親標籤的名字:soup.a.parent.name
- 獲得標籤的屬性:
tag = soup.a
後再tag.attrs
結果以字典的方式輸出
- 檢視型別用:
type(soup.p.string)
見圖,soup.p.string列印出來的內容並不包含p中的標籤的內容,由此可知 NavigableString 是可以跨越多個標籤層次的。 - 用type可以判斷出來是否是Comment型別,因為列印時候註釋內容也是正常列印出來的。
基於bs4庫的HTML內容的遍歷方式
標籤樹的下行遍歷:
用法例如:soup.head.contents
標籤的兒子還包括字串節點如\n
len(soup.body.contents)
獲得body兒子節點的數量
soup.body.contents[1]
檢視其第一個兒子
遍歷兒子節點:for child in soup.body.children:
print(child)
遍歷孫子節點:for child in soup.body.children:
print(child)
上行遍歷:會遍歷到soup本身
用法例如看title標籤的父親標籤:soup.title.parent
標籤html的父親標籤就是它自己
soup是一個特殊的標籤,父親是空的。
一個上行遍歷程式碼:
soup = BeautifulSoup(demo,"html.parser")
for parent in soup.a.parents:
if parent is None:#因為會遍歷到soup本身,此時就是None
print(parent)
else:
print(parent.name)
平行遍歷:
必須發生在同一個父親節點下的各個節點之間,否則不構成平行遍歷關係,還有NavigableString型別
遍歷後續節點:
for sibling in soup.a.next_siblings:
print(sibling)
遍歷前續節點:
for sibling in soup.a.previous_siblings:
print(sibling)
基於bs4庫的HTML格式化
如何讓HTML更加“友好”的顯示?
用的是 bs4庫的 prettify()方法,能夠對文字加換行符
*注:文章圖片來字mooc課件截圖
相關文章
- Beautiful Soup學習
- Beautiful Soup 學習手冊
- Python爬蟲學習(11):Beautiful Soup的使用Python爬蟲
- 淺析Beautiful Soup庫和Lxml庫XML
- 一起學爬蟲——使用Beautiful Soup爬取網頁爬蟲網頁
- Python Beautiful Soup簡介Python
- Beautiful Soup在爬蟲中的基本使用語法爬蟲
- 使用 Beautiful Soup 在 Python 中抓取網頁Python網頁
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-2 使用Beautiful SoupPython爬蟲
- Python Beautiful Soup+requests實現爬蟲Python爬蟲
- Python網頁抓取工具Beautiful Soup面面觀!Python網頁
- JB的Python之旅-爬蟲篇--urllib和Beautiful SoupPython爬蟲
- boost庫學習筆記筆記
- Mpmath庫-學習筆記筆記
- Django學習筆記—Comments庫的使用方法小記Django筆記
- 資料庫學習筆記——20 使用遊標資料庫筆記
- 資料庫學習筆記資料庫筆記
- 【JavaScript學習筆記】if使用JavaScript筆記
- numpy的學習筆記\pandas學習筆記筆記
- python爬蟲之Beautiful Soup基礎知識+例項Python爬蟲
- MySQL學習筆記-使用Navicat操作MySQL資料庫MySql筆記資料庫
- MySQL資料庫學習筆記MySql資料庫筆記
- Python學習筆記——turtle庫Python筆記
- docker學習筆記(2)- 倉庫Docker筆記
- Python機器學習筆記:sklearn庫的學習Python機器學習筆記
- express-winston 庫的學習筆記Express筆記
- 【學習筆記】Go Modules 使用筆記Go
- webpack 學習筆記:使用 lodashWeb筆記
- Vue學習筆記之Webpack的使用Vue筆記Web
- innodb學習筆記(一) aio的使用筆記AI
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- CMake構建學習筆記17-uriparser庫的構建和使用筆記
- 08年在大學學習資料庫的筆記資料庫筆記
- 資料庫的正規化學習筆記資料庫筆記
- Redis學習筆記(七) 資料庫Redis筆記資料庫
- 達夢資料庫學習筆記資料庫筆記
- python學習筆記:資料庫Python筆記資料庫
- 資料庫原理學習筆記——引言資料庫筆記