标签树的下行遍历
.contents(内容) 子节点的列表,将<tag>所有的儿子节点存入列表
.childern(孩子) 子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.descendants (后裔)子孙节点的迭代类型,包含所有子孙节点,用于循环遍历
from bs4 import BeautifulSoup
import requests
try:
r=requests.get("http://python123.io/ws/demo.html",timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
demo=r.text
soup=BeautifulSoup(demo,'html.parser')
print('head标签',soup.head)#<head><title>This is a python demo page</title></head>
#head内容
print('head标签的内容',soup.head.contents)
print('body标签的内容',soup.body.contents)
#遍历子节点
for child in soup.body.children:
print(child)
#遍历子孙节点
for descendants in soup.body.descendants:
print('子孙节点',descendants)
except:
print("有点问题")
标签树的上行遍历:
.parent 节点的父亲标签
.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点
from bs4 import BeautifulSoup
import requests
try:
#接收响应
r=requests.get("http://python123.io/ws/demo.html",timeout=30)
#异常
r.raise_for_status()
#编码
r.encoding=r.apparent_encoding
#接收返回的html 用BeautifulSoup 进行处理
demo=r.text
soup=BeautifulSoup(demo,'html.parser')
print(soup)
#打印 标签树的上行遍历
for parent in soup.a.parents:
if parent is None :
print(parent)
else:
print('a',parent.name)
except:
print('异常')
标签树的平行遍历(平行遍历发生在同一节点下):
.next_sibling 返回按照html文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 迭代类型,返回按照HTML 文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签