import requests
from bs4 import BeautifulSoup
r = requests.get("http://python123.io/ws/demo.html")
demo = r. text
soup = BeautifulSoup(demo, 'html.parser')
#newsoup = BeautifulSoup("<b><!--This is a comment.--></b><p>This is not a comment</p>","html.parser")
print(newsoup.b.string)
print(type(newsoup.b.string)
print(newsoup.p.string)
print(type(newsoup.p.string))
HTML的內容遍歷
HTML基本格式@2x.png
HTML樹形結構@2x.png
遍歷圖解@2x.png
下行遍歷
屬性
說明
.contents
子節點的列表,將<tag>所有兒子節點存入列表
.children
子節點的迭代類型,與.contents類似,用于循環遍歷兒子節點
.descendants
子孫節點的迭代類型,包含所有子孫節點,用于循環遍歷
print(soup.head)
print(soup.head.contents)
print(soup.body.contents)
print(len(soup.body.contents))
print(soup.body.contents[1])
# 遍歷兒子節點
for child in soup.body.children:
print(child)
# 遍歷子孫節點
for child in soup.body.descendants:
print(child)
上行遍歷
屬性
說明
.parent
節點的父親標簽
.parents
節點先輩標簽的迭代類型,用于循環遍歷先輩節點
print(soup.title.parent)
for parent in soup.a.parents:
if parent is None:
print(parent)
else:
print(parent.name)
平行遍歷
屬性
說明
.next_sibling
返回按照HTML文本順序的下一個平行節點標簽
.previous_sibling
返回按照HTML文本順序的上一個平行節點標簽
.next_siblings
迭代類型,返回按照HTML文本順序的后續所有平行節點標簽
.previous_sibling
迭代類型,返回按照HTML文本順序的前續所有平行節點標簽
print(soup.a.next_sibling)
print(soup.a.next_sibling.next_sibling)
print(soup.a.previous_sibling)
print(soup.a.previous_sibling.previous_sibling)
print(soup.a.parent)
# 遍歷后續節點
for sibling in soup.a.next_siblings:
print(sibling)
# 遍歷前續節點
for sibling in soup.a.previous_siblings:
print(sibling)