Beautiful Soup学习(二)

Beautiful Soup学习(二)

父节点

import bs4
from bs4 import BeautifulSoup

html_doc = """
  <head>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
  <title>
   齐鲁晚报网-山东新闻门户 传播品质资讯
  </title>
  <meta content="齐鲁晚报,生活日报,鲁南商报,山东新闻,济南新闻,滚动新闻,齐鲁晚报论坛,网上报料,拍客,微博齐鲁" name="keywords"/>
  <meta content="”no-transform”" http-equiv="”Cache-Control”"/>
  <meta content="YSz04dmCHI" name="baidu-site-verification"/>
  <link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/qlwb.css" rel="stylesheet" type="text/css"/>
  <link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/ad.css" rel="stylesheet" type="text/css"/>/
  <link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/index-szb.css" rel="stylesheet" type="text/css"/>
  </head>
"""
# 解析文档
bs = bs4.BeautifulSoup(html_doc, 'lxml')
tag = bs.title
# 通过 .parent 属性来获取某个元素的父节点
print(tag.parent.name)
# 文档title的字符串也有父节点:<title>标签
print(tag.string.parent.name)
# 文档的顶层节点比如<head>的父节点是 BeautifulSoup 对象:
print(type(bs.html.parent))
# BeautifulSoup 对象的 .parent 是None:
print(bs.parent)
# 通过元素的 .parents 属性可以递归得到元素的所有父辈节点
for i in tag.parents:
    if i is None:
        print(i)
    else:
        print(i.name)

输出

head
title
<class 'bs4.BeautifulSoup'>
None
head
html
[document]

兄弟节点

import bs4
from bs4 import BeautifulSoup

html_doc = """
  <head>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
  <title>
   齐鲁晚报网-山东新闻门户 传播品质资讯
  </title>
  <meta content="齐鲁晚报,生活日报,鲁南商报,山东新闻,济南新闻,滚动新闻,齐鲁晚报论坛,网上报料,拍客,微博齐鲁" name="keywords"/>
  <meta content="”no-transform”" http-equiv="”Cache-Control”"/>
  <meta content="YSz04dmCHI" name="baidu-site-verification"/>
  <link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/qlwb.css" rel="stylesheet" type="text/css"/>
  <link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/ad.css" rel="stylesheet" type="text/css"/>/
  <link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/index-szb.css" rel="stylesheet" type="text/css"/>
  </head>
"""
# 解析文档
bs = bs4.BeautifulSoup(html_doc, 'lxml')
tag = bs.title
# 在文档树中,使用 .next_sibling 和 .previous_sibling 属性来查询兄弟节点:
print(tag.next_sibling)
print(tag.previous_sibling)
# 通过 .next_siblings 和 .previous_siblings 属性可以对当前节点的兄弟节点迭代输出:
print("-----------------------")
for i in tag.next_siblings:
    print(i)
print('----------------')
for i in tag.previous_siblings:
    print(i)
print('-------------------')
# .next_element 属性指向解析过程中下一个被解析的对象(字符串或tag),
print(tag.next_element)
# .previous_element,它指向当前被解析的对象的前一个解析对象:
print(tag.previous_element)
# 通过 .next_elements 和 .previous_elements 的迭代器就可以向前或向后访问文档的解析内容,就好像文档正在被解析一样:

输出





-----------------------


<meta content="齐鲁晚报,生活日报,鲁南商报,山东新闻,济南新闻,滚动新闻,齐鲁晚报论坛,网上报料,拍客,微博齐鲁" name="keywords"/>


<meta content="”no-transform”" http-equiv="”Cache-Control”"/>


<meta content="YSz04dmCHI" name="baidu-site-verification"/>


<link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/qlwb.css" rel="stylesheet" type="text/css"/>


<link href="https://img.qlwb.com.cn/templates/qlwb/css/2017shou/ad.css" rel="stylesheet" type="text/css"/>
----------------


<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>


-------------------

   齐鲁晚报网-山东新闻门户 传播品质资讯

参考

Beautiful Soup 4.2.0 文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值