BeautifulSoup

BeautifulSoup是一個解析HTML文件的一個庫
from bs4 import BeautifulSoup#引用的bs4庫導入的BeautifulSoup類
1:BeautifulSoup類的基本元素
(1)Tag 標籤,最基本的信息組織單元,分別用<>和</>表明開頭和結尾
(2)Name 標籤的名字
(3)Attribute 標籤的屬性
(4)NavigableString 標籤內非屬性字符串
(5)Comment 標籤內字符串的註釋部分
2:最常使用的方法
soup = BeautifulSoup(demo ,"html.parser")
#demo 是BeautifulSoup解析的一個HTML的信息 後面的參數是一個解析器
解析器的其他形式(不同的解析器需要安裝不同的包) 
lxml         pip install lxml
xml         pip install lxml
html5lib     pip install html5lib
例如: 
import requests
r = requests.get("http://python123.io/ws/demo.html")
print(r.text)
demo = r.text
soup = BeautifulSoup(demo ,"html.parser")  
3:標籤樹的元素 
<p class = "title"> ... </p>
 p爲標籤的名字 title是屬性
#看一下soup的開頭 頁面左上方的信息
print(soup.title)
#獲得 .a標籤 鏈接標籤的內容 如果有多個a標籤返回第一個
tag = soup.a
print(tag)
#看一下a的父標籤的名字是什麼 也就是 什麼標籤包含了a標籤
print(soup.a.parent.name)
#再看一下 a的爺爺輩的標籤
print(soup.a.parent.parent.name)
#標籤的屬性信息
print(tag.attrs)
#獲得class屬性的值
print(tag.attrs['class'])
#獲得標籤的鏈接屬性
print(tag.attrs['href'])
4: 基於bs4庫的HTML遍歷方法
(1)標籤樹的下行遍歷
.contents 子節點的列表,將標籤的所有兒子節點存入列表
.children 子節點的迭代類型,
.descendants 子孫節點的迭代類型,包含所有的子孫節點,用於遍歷循環
#獲得頭標籤
print(soup.head)
獲得頭標籤的兒子節點
print(soup.head.contents)
打印body標籤的兒子節點
print(soup.body.contents)
因爲soup.body.contents返回的是list類型,可以查看兒子標籤的數量
len(soup.body.contents)
也可以單獨的訪問某一標籤,通過下標
print(soup.body.contents[1])
(2)標籤樹的上行遍歷
parent 節點的父親標籤
parents 節點先輩標籤的迭代類型,用於循環遍歷先輩節點
for parent in soup.a.parents:
    if parent is None:
        print(parent)
    else:
        print(parent.name)
5:基於bs4庫的HTML格式的輸出
prittify()#可以再每一個標籤後面增加換行符,能夠更好地輸出
查找a標籤 並打印href屬性
for link in soup.find_all('a'):
    print(link.get('href'))
<>.find_all(name, attrs, recursive,?string,?**kwargs)
? name?:?對標籤名稱的檢索字符串
? attrs:?對標籤屬性值的檢索字符串,可標註屬性檢索
? recursive:?是否對子孫全部檢索,默認True
? string:?<>…</>中字符串區域的檢索字符串
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章