BeautifulSoup

2023-05-16

代码:

from bs4 import BeautifulSoup

#一个html格式的内容
doc = ['<html><head><title>Page title</title></head>',
      '<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
      '<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
      '</html>']

#首先使用BeautifulSoup来解析html文档,去除除了html文档非标签节点之外的内容
soup = BeautifulSoup(''.join(doc), "lxml")
#之后使用prettify函数格式化输出
print(soup.prettify())

运行结果:

<html>
 <head>
  <title>
   Page title
  </title>
 </head>
 <body>
  <p align="center" id="firstpara">
   This is paragraph
   <b>
    one
   </b>
   .
  </p>
  <p align="blah" id="secondpara">
   This is paragraph
   <b>
    two
   </b>
   .
  </p>
 </body>
</html>

代码:

#列表数的结构

# 根节点
print("===" * 20)
print(soup.contents[0].name)

# 根节点的下一层第一个节点
print("===" * 20)
print(soup.contents[0].contents[0].name)

# 父节点
print("===" * 20)
print(soup.contents[0].contents[0].parent.name)

# 内容
print("===" * 20)
print(soup.contents[0].contents[0].contents[0].text)

# 下一层
print("===" * 20)
print(soup.contents[0].contents[0].next)

# 兄弟节点
print("===" * 20)
print(soup.contents[0].contents[0].next_sibling)
print(soup.contents[0].contents[0].next_sibling.name)
print(soup.contents[0].contents[0].next_sibling.text)

运行结果:

============================================================
html
============================================================
head
============================================================
html
============================================================
Page title
============================================================
<title>Page title</title>
============================================================
<body><p align="center" id="firstpara">This is paragraph <b>one</b>.</p><p align="blah" id="secondpara">This is paragraph <b>two</b>.</p></body>
body
This is paragraph one.This is paragraph two.

代码:

titlePage = soup.html.head.title
print("===" * 20)
print(titlePage)

# 内容
print("===" * 20)
print(titlePage.string)
print(titlePage.text)

运行结果:

============================================================
<title>Page title</title>
============================================================
Page title
Page title

代码:

# soup.find
print("===" * 20)
print(soup.find('title').text)

# soup.find_all
print("===" * 20)
print(soup.find_all('p'))
# 根据属性定位
print(soup.find_all('p', align="center"))

运行结果:

============================================================
Page title
============================================================
[<p align="center" id="firstpara">This is paragraph <b>one</b>.</p>, <p align="blah" id="secondpara">This is paragraph <b>two</b>.</p>]
[<p align="center" id="firstpara">This is paragraph <b>one</b>.</p>]

代码:

# 网页内容
test_scrapy = '''<div><p>  4月2日,记者从省财政厅了解到,通过深化预算管理制度改革,加强内控管理,加大监督检查力度,强化制度刚性约束,2017年全省“三公”经费财政拨款执行数为4.29亿元,较2012年减少2.2亿元,年均下降12.1%,有效降低了行政运行成本,财政资金使用效率和群众满意度进一步提升。</p><p>  近年来,我省坚持把严格控制“三公”经费的要求体现在年度预算中,按照只减不增的原则安排部门预算中的相关经费,从源头上加强了对全省“三公”经费的管控。加强和巩固公务用车制度改革,严控车辆购置及运行支出,在部门预算中省级部门一律不安排公务用车购置费,属公车改革保留车辆确需更新的,从公车改革取消车辆中调剂解决。</p><p>  全面推行公务卡结算制度,扩大公务卡结算范围,减少现金结算事项,加强对单位经费支付环节和报销环节的管理,明确了公务活动的支出行为、标准和范围,形成不能、不愿、不敢铺张浪费的长效机制。</p><p>  细化“三公”经费公开方案、明确公开重点,主动接受社会监督,持之以恒推进财政信息公开,并结合财政部预决算公开检查工作安排,会同财政部驻青专员办,对全省范围内“三公”经费公开情况展开全面检查,除涉密部门外,检查覆盖面达100%。(周建萍)</p><div>
'''

soup =BeautifulSoup(''.join(test_scrapy), "lxml")
print(soup.prettify())

运行结果:

<html>
 <body>
  <div>
   <p>
    4月2日,记者从省财政厅了解到,通过深化预算管理制度改革,加强内控管理,加大监督检查力度,强化制度刚性约束,2017年全省“三公”经费财政拨款执行数为4.29亿元,较2012年减少2.2亿元,年均下降12.1%,有效降低了行政运行成本,财政资金使用效率和群众满意度进一步提升。
   </p>
   <p>
    近年来,我省坚持把严格控制“三公”经费的要求体现在年度预算中,按照只减不增的原则安排部门预算中的相关经费,从源头上加强了对全省“三公”经费的管控。加强和巩固公务用车制度改革,严控车辆购置及运行支出,在部门预算中省级部门一律不安排公务用车购置费,属公车改革保留车辆确需更新的,从公车改革取消车辆中调剂解决。
   </p>
   <p>
    全面推行公务卡结算制度,扩大公务卡结算范围,减少现金结算事项,加强对单位经费支付环节和报销环节的管理,明确了公务活动的支出行为、标准和范围,形成不能、不愿、不敢铺张浪费的长效机制。
   </p>
   <p>
    细化“三公”经费公开方案、明确公开重点,主动接受社会监督,持之以恒推进财政信息公开,并结合财政部预决算公开检查工作安排,会同财政部驻青专员办,对全省范围内“三公”经费公开情况展开全面检查,除涉密部门外,检查覆盖面达100%。(周建萍)
   </p>
   <div>
   </div>
  </div>
 </body>
</html>

代码:

text = soup.find_all('p')
print(text)

print("===" * 20)
for node in text:
    print(node.text)

运行结果:

[<p>  4月2日,记者从省财政厅了解到,通过深化预算管理制度改革,加强内控管理,加大监督检查力度,强化制度刚性约束,2017年全省“三公”经费财政拨款执行数为4.29亿元,较2012年减少2.2亿元,年均下降12.1%,有效降低了行政运行成本,财政资金使用效率和群众满意度进一步提升。</p>, <p>  近年来,我省坚持把严格控制“三公”经费的要求体现在年度预算中,按照只减不增的原则安排部门预算中的相关经费,从源头上加强了对全省“三公”经费的管控。加强和巩固公务用车制度改革,严控车辆购置及运行支出,在部门预算中省级部门一律不安排公务用车购置费,属公车改革保留车辆确需更新的,从公车改革取消车辆中调剂解决。</p>, <p>  全面推行公务卡结算制度,扩大公务卡结算范围,减少现金结算事项,加强对单位经费支付环节和报销环节的管理,明确了公务活动的支出行为、标准和范围,形成不能、不愿、不敢铺张浪费的长效机制。</p>, <p>  细化“三公”经费公开方案、明确公开重点,主动接受社会监督,持之以恒推进财政信息公开,并结合财政部预决算公开检查工作安排,会同财政部驻青专员办,对全省范围内“三公”经费公开情况展开全面检查,除涉密部门外,检查覆盖面达100%。(周建萍)</p>]

   4月2日,记者从省财政厅了解到,通过深化预算管理制度改革,加强内控管理,加大监督检查力度,强化制度刚性约束,2017年全省“三公”经费财政拨款执行数为4.29亿元,较2012年减少2.2亿元,年均下降12.1%,有效降低了行政运行成本,财政资金使用效率和群众满意度进一步提升。
  近年来,我省坚持把严格控制“三公”经费的要求体现在年度预算中,按照只减不增的原则安排部门预算中的相关经费,从源头上加强了对全省“三公”经费的管控。加强和巩固公务用车制度改革,严控车辆购置及运行支出,在部门预算中省级部门一律不安排公务用车购置费,属公车改革保留车辆确需更新的,从公车改革取消车辆中调剂解决。
  全面推行公务卡结算制度,扩大公务卡结算范围,减少现金结算事项,加强对单位经费支付环节和报销环节的管理,明确了公务活动的支出行为、标准和范围,形成不能、不愿、不敢铺张浪费的长效机制。
  细化“三公”经费公开方案、明确公开重点,主动接受社会监督,持之以恒推进财政信息公开,并结合财政部预决算公开检查工作安排,会同财政部驻青专员办,对全省范围内“三公”经费公开情况展开全面检查,除涉密部门外,检查覆盖面达100%。(周建萍)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BeautifulSoup 的相关文章

随机推荐

  • R语言——数据分析的一把利剑

    R语言 xff0c 我把它称之为数据分析的一把利剑 为什么这么说呢 xff1f 先让我们看一下 xff0c 什么是数据分析 xff1f 所谓数据分析 xff0c 就是以商业目的为驱动 xff0c 所开展的获取数据 处理数据 分析数据 展示数
  • 【爱上Linux】第一课 Linux概述

    学习应该是快乐的事情 快乐的东西应该要分享开来 xff0c 人人都快乐 xff01 爱上Linux 第一课 Linux概述 在本课中 xff0c 和朋友们一起来思考这些问题 问题一 xff1a 谈Linux学习 xff1f 从四个方面来看
  • 链表的创建与遍历

    链表 xff0c 简而言之 xff0c 就是基于链式储存结构下的线性表 链表包括单向链表 双向链表以及循环链表 链表是一种很常用的数据结构 xff0c 其定义如下 xff1a 单向链表的定义 定义说明 xff1a 包括数据域和指针域 typ
  • Java异常机制

    Java异常 xff08 Exception xff09 又称例外 xff0c 是一种运行时错误 Java异常机制就是对于Java异常的处理方法 xff0c 使用Java异常机制能提升程序的容错性 xff0c 从而使程序更加健壮与安全 ja
  • Java序列化与反序列化

    Java序列化与反序列化是什么 xff1f 为什么需要序列化与反序列化 xff1f 如何实现Java序列化与反序列化 xff1f 本文围绕这些问题进行了探讨 1 Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程
  • Java语言中几个常用的包

    Java采用包结构来组织和管理类和接口文件 本文介绍Java语言类库中几个常用的包 xff0c 因为这几个包在软件开发与应用中经常需要用到 xff0c 其中有些包是必要的 若是离开它 xff0c 还真不能做事情了 第一个包 xff1a ja
  • 计算机网络

    Cname和A记录 CNAME和A记录 A记录 Address记录 xff0c 代表指向关系 www xx com 1 1 1 1 www yy com 2 2 2 2 CNAME cname 代表一种映射关系 www yy com www
  • AI芯片面试总结

    基础书籍有哪些 xff1f 重点章节以及概念 xff1f 计算机体系结构 量化研究方法 xff1b 计算机组成与设计 软硬件接口 xff1b deep learning 深度学习 xff1b python xff1b CMOS数字集成电路
  • Android的系统架构

    Android的系统架构采用了分层架构的思想 xff0c 如图1所示 从上层到底层共包括四层 xff0c 分别是应用程序程序层 应用框架层 系统库和Android运行时和Linux内核 图1 xff1a Android系统架构图 每层功能简
  • ensp实验一网络设备基本操作

    实验一 网络设备基本操作 一 实验目的 熟悉网络设备的基本配置 xff1b 掌握网络设备文件系统管理 xff1b 掌握设备的基本调试方法 二 实验学时及环境 1 实验学时 xff1a 2 2 操作系统 xff1a Windows 3 模拟环
  • sudo rosdep init出错 rosdepc update的解决方案

    https mp weixin qq com s VGs8oWdhHH6XsHcx21lN4Q 或者搜索 本文之后 xff0c 世上再无rosdep更新失败问题 xff01 如果有 小鱼就
  • pixhawk学习笔记---创建新的应用程序

    最近转到无人机领域的开发中 xff0c 感觉和以往搞android驱动差别比较大 xff0c 以前搞android驱动的时候网上的资料满天飞 xff0c 但是现在关于飞控相关的资料却少之又少 xff0c 一些资料都是从原理上入手 xff0c
  • 伽马贝塔函数

    在数理方程 概率论等学科经常遇到以下的含参变量的积分 xff0c 它们依次为第一类和第二类欧拉 xff08 Euler 1707 1783瑞士数学家 xff09 积分 xff0c 或依次称为贝塔 xff08 Bata xff09 函数和伽马
  • http-parser用法

    头文件说明 xff1a 解析类型定义 xff1a enum http parser type HTTP REQUEST HTTP RESPONSE HTTP BOTH 解析函数声明 xff1a void http parser init h
  • gazebo崩溃

    1 虚拟机下打开gazebo报错 xff1a VMware vmw ioctl command error Invalid argument INFO 1610283240 619937255 0 180000000 LeePosition
  • k8s中文网站

    https www kubernetes org cn doc 11
  • 【平衡车】PID控制原理到底如何理解?建议收藏!

    文章目录 前言PID算法PID算法的形成P算法 xff0c 即比例控制算法 I算法 xff0c 即积分控制算法D算法 xff0c 即微分控制算法PID总体的数学模型 xff1a 基于单片机的PID控制算法 xff1a 单片机中的PID算法的
  • 嵌入式C语言修炼之道.屏幕操作篇

    汉字处理 现在要解决的问题是 xff0c 嵌入式系统中经常要使用的并非是完整的汉字库 xff0c 往往只是需要提供数量有限的汉字供必要的显示功能 例如 xff0c 一个微波炉的LCD上没有必要提供显示 34 电子邮件 34 的功能 xff1
  • CDN—内容分发网络

    CDN 1 含义 CDN的全称是Content Delivery Network xff0c 即内容分发网络 CDN是构建在现有网络基础之上的智能虚拟网络 xff0c 依靠部署在各地的边缘服务器 xff0c 通过中心平台的负载均衡 内容分发
  • BeautifulSoup

    代码 xff1a from bs4 import BeautifulSoup 一个html格式的内容 doc 61 39 lt html gt lt head gt lt title gt Page title lt title gt lt