上篇文章中,Python爬蟲之requests庫網(wǎng)絡(luò)爬取簡單實(shí)戰(zhàn)
我們學(xué)習(xí)了如何利用requets庫快速獲取頁面的源代碼信息。我們在具體的爬蟲實(shí)踐的時候,第一步就是獲取到頁面的源代碼,但是僅僅是獲取源代碼是不夠的,我們還需要從頁面的源代碼中提取出我們所需要的那一部分的信息。所以,爬蟲的難點(diǎn)就在于對源代碼的信息的提取與處理。
Beautiful Soup 是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫.它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式.Beautiful Soup會幫你節(jié)省數(shù)小時甚至數(shù)天的工作時間.
具體的BeautifulSoup的安裝與介紹比較簡單,我們可以參考https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/#id17
Beautiful Soup庫的理解

簡單的說,BeautifulSoup庫可以將一個html文檔轉(zhuǎn)換成一個BeautifulSoup類,然后我們就可以使用BeautifulSoup的各種方法提取出我們所需要的元素
Beautiful Soup庫是解析、遍歷、維護(hù)“標(biāo)簽樹”的功能庫
要理解與使用BeautifulSoup庫我們就需要對html文檔有了解

Beautiful Soup庫的引用
Beautiful Soup庫,也叫beautifulsoup4 或 bs4
約定引用方式如下,即主要是用BeautifulSoup類
from bs4 import BeautifulSoup
import bs4

BeautifulSoup對應(yīng)一個HTML/XML文檔的全部內(nèi)容
Beautiful Soup庫解析器
soup = BeautifulSoup('<html>data</html>','html.parser')

BeautifulSoup類的基本元素

BeautifulSoup解析實(shí)例
我們先用requests庫獲取一個簡單的頁面
http://python123.io/ws/demo.html

import requests
r = requests.get("http://python123.io/ws/demo.html")
demo = r.text
print(demo)

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(demo, 'html.parser')
>>> soup.prettify()
我們可以利用BeautifulSoup庫對頁面進(jìn)行解析和提取
Tag 標(biāo)簽

>>> soup.title
<title>This is a python demo page</title>
>>> tag = soup.a
>>> tag
<a class="py1" id="link1">Basic Python</a>
任何存在于HTML語法中的標(biāo)簽都可以用soup.<tag>訪問獲得
當(dāng)HTML文檔中存在多個相同<tag>對應(yīng)內(nèi)容時,soup.<tag>返回第一個
Tag的name(名字)

>>> soup.a.name
'a'
>>> soup.a.parent.name
'p'
>>>
每個<tag>都有自己的名字,通過<tag>.name獲取,字符串類型
Tag的attrs(屬性)

Tag的NavigableString


Tag的Comment


基于bs4庫的HTML內(nèi)容遍歷方法


標(biāo)簽樹的下行遍歷

BeautifulSoup類型是標(biāo)簽樹的根節(jié)點(diǎn)
標(biāo)簽樹的下行遍歷


標(biāo)簽樹的上行遍歷



標(biāo)簽樹的平行遍歷





小結(jié)
