代码:
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%。(周建萍)