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)