BeautifulSoup 中 獲取標簽下的文本


常用方法:
使用get_text()方法可以獲取當前標簽下的所有文字,包括其子標簽的,該方法可自動剔除其余的修飾標簽
若當前標簽的子節點是文字,可使用.string獲得其下的文本內容
高階方法:
若文本屬於此標簽的一個子節點、兄弟節點、父節點等,可靈活使用以下遍歷方法進行獲取:

1.下行遍歷
標簽樹的下行遍歷

.content 子節點列表,將tag所有兒子節點存入列表
.children子節點的迭代類型,與.contents類似用於循環遍歷兒子節點 .descendants 子孫節點的迭代類型,包含所有子孫節點,用於循環遍歷

測試代碼:

import requests
from bs4 import BeautifulSoup
r=requests.get("http://python123.io/ws/demo.html")
demo=r.text
soup=BeautifulSoup(demo,"html.parser")
print(soup.head) #head標簽內容
print(soup.head.contents) #head標簽子節點的內容
print(soup.body.contents) #body標簽子節點的內容
print(len(soup.body.contents)) #body標簽的子節點層數
print(soup.body.contents[1]) #

2.上行遍歷
.parent 節點的父親標簽
.parents 循環遍歷先輩節點

測試代碼:

import requests
from bs4 import BeautifulSoup
r=requests.get("http://python123.io/ws/demo.html")
demo=r.text
soup=BeautifulSoup(demo,"html.parser")
#print(soup.title.parent)
#print(soup.html.parent)
for parent in soup.a.parents:
    if parent is None:
        print(parent)
    else:
        print(parent.name)

3.平行遍歷
標簽樹的平行遍歷

.next_sibling 返回按照HTML文本順序的下一個平行節點標簽
.previous_sibling返回按照HTML文本順序的上一個平行節點標簽 .nex_siblings 迭代類型,返回按照HTML文本順序的后續所有平行節點標簽
.previous_siblings 迭代類型,返回按照HTML文本順序的前續所有平行節點標簽

import requests
from bs4 import BeautifulSoup
r=requests.get("http://python123.io/ws/demo.html")
demo=r.text
soup=BeautifulSoup(demo,"html.parser")
print(soup.a.next_sibling) #a的平行標簽
print(soup.a.next_sibling.next_sibling) #a標簽的下一個標簽的平行標簽
print(soup.a.previous_sibling) #a標簽的上一個標簽
print(soup.a.previous_sibling.previous_sibling) #a標簽的上一個標簽的平行標簽


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM