from bs4 import BeautifulSoup html = """ <html> <head><title>标题</title></head> <body> <p class="story" name="dromouse">从前有三个小姐妹,她们的名字是 <a href="http://example.com/elsie" class="sister" id="link1"><!--Elseie--></a>, <a href="http://example.com/lacie" class="sister" id="link2"><b>Lacie</b></a>, <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; 她们生活在一个井的下面</p> <p class="story">...</p> </body> </html> """ soup = BeautifulSoup(html, 'lxml') # 格式化输出 # print(soup.prettify()) # 打印title节点的内容 # print(soup.title.string) # 选择元素 会获取到第一个匹配到的该元素 # print(soup.head) # print(soup.p) # 获取元素的属性 若不是唯一属性 例如 name id 则通过attrs获取 # print(soup.title.name) # print(soup.a.attrs) # print(soup.a.attrs['class']) # print(soup.a.attrs['href']) # 关联选择 如 父子 兄弟等 # print(soup.p.contents) # 子节点 不拆分子孙节点 # print(soup.p.children) # for i, child in enumerate(soup.p.children): # print(i, child) # 子孙节点 全部查询出来 # print(soup.p.descendants) # for i, child in enumerate(soup.p.descendants): # print(i, child) # parent 唯一父元素 print(soup.a.parent) # parents 祖先元素 p body html 一层一层往上 print(soup.a.parents) for i, child in enumerate(soup.a.parents): print(i, child)