之前有過幾次Python的學習史,每次都無疾而終,由于并沒有實際的工作需要用到Python,我把學到的東西做個總結(jié),忘記的時候拿出來看看,希望有一天能學以致用。
先總結(jié)再分析
BeautifulSoup是一個HTML或 XML的解析庫,它會自動將輸入文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為UTF-8編碼
BeautifulSoup在解析時依賴第三方解析器,這就是為什么參數(shù)里面要加'lxml',安裝lxml時會提示安裝xcode,也就是需要安裝C語言庫。
from bs4 import BeautifulSoup #bs4庫里面導入BeautifulSoup模塊
soup = BeautifulSoup(markup,'lxml') #經(jīng)典用法,各大教程可見
然后我們研究soup的屬性和使用方法,type(soup)得到的是<class 'bs4.BeautifulSoup'>
Soup使用方法:
1.節(jié)點選擇器
直接調(diào)用節(jié)點的名稱就可以選擇節(jié)點元素,在調(diào)用string屬性就可以得到節(jié)點內(nèi)的文本內(nèi)容了,適用于單個節(jié)點層次非常清晰的html文檔。
import requests
from bs4import BeautifulSoup
response = requests.get('https://www.qiushibaike.com/').text #獲取網(wǎng)頁,并轉(zhuǎn)為文本
soup = BeautifulSoup(response,'lxml') #將對象傳入解析器
span = soup.span.string #定位span標簽,獲取文本內(nèi)容
print(span)
輸出結(jié)果:
用find_all('span')可以查詢出所有span標簽的內(nèi)容 或者find_all(節(jié)點 = '節(jié)點屬性'),還有子父兄弟節(jié)點等,目前用得少,暫不深究。
2.CSS選擇器
使用CSS選擇器時,只需要調(diào)用select()方法,獲取多行信息時需要使用for遍歷,獲取文本方式有兩種 .string .get_text()
在取得含有特定CSS屬性的元素時,標簽名不加任何修飾,類名前加點,id名前加 #。CSS選擇器使用方法請點擊(https://www.cnblogs.com/ALittleBee/p/7702560.html)
3.正則
使用正則最精準,但容易寫錯