目录

BeautifulSoup children descendants对比

1 简介

2 验证

2.1 数据说明

2.2 案例说明

2.3 代码验证

2.4结果输出

3 其它


BeautifulSoup children descendants对比

1 简介

1 children、descendants是beatifulsoup里常见的遍历子孙的方法,它们的区别在于children仅遍历所有子节点而decendants会迭代遍历children节点及其子孙节点。

2 适应人群:有html和python基础者

2 验证

2.1 数据说明

假设有child.html文件且内容如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"><meta content="IE=Edge" http-equiv="X-UA-Compatible"><meta content="webkit" name="renderer"><title>资源交易网</title><link href="../template/default/css/common.css" rel="stylesheet">
</head>
<body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center"><h2 class="article-title"><span id="ZtbzbggDetail_jsgc1_title">农业农村局 农业生产经营主体及其产品追溯体系建设项目公告</span></h2></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" id="ZtbzbggDetail_jsgc1_date" width="100%"><tbody><tr><td align="center" style="line-height: 25px; color: #4e4e4e;">【信息日期:<span id="ZtbzbggDetail_jsgc1_LblInfoDate">2019/12/31</span>】</td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td style="text-align:left;"><div id="ZtbzbggDetail_jsgc1_content"><p align="center" style="background: rgb(255, 255, 255); margin: 0pt; text-align: center; line-height: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10.5pt; -ms-text-justify: inter-ideograph;"><b><span style="font-family: 宋体; font-size: 22pt; font-weight: bold;"><font face="宋体">农业农村局农业生产经营主体及其产品追溯体系建设项目</font></span></b><b><span style="font-family: 宋体; font-size: 22pt; font-weight: bold;"><font face="宋体">公开公告</font></span></b></p><p style="background: rgb(255, 255, 255); margin: 0pt; text-align: justify; line-height: 28pt; text-indent: 32pt; font-family: &quot;Times New Roman&quot;; font-size: 10.5pt; -ms-text-justify: inter-ideograph;"><span style="color: rgb(0, 0, 0); font-family: 仿宋_GB2312; font-size: 16pt;"><font face="仿宋_GB2312">政府采购中心</font></span><span style="color: rgb(0, 0, 0); font-family: 仿宋_GB2312; font-size: 16pt;"><font face="仿宋_GB2312">受</font></span><span style="color: rgb(0, 0, 0); font-family: 仿宋_GB2312; font-size: 16pt;"><font face="仿宋_GB2312">农业农村局</font></span><span style="color: rgb(0, 0, 0); font-family: 仿宋_GB2312; font-size: 16pt;"><font face="仿宋_GB2312">的委托,现对</font> </span><span style="color: rgb(0, 0, 0); font-family: 仿宋_GB2312; font-size: 16pt;"><font face="仿宋_GB2312">农业农村局农业生产经营主体及其产品追溯体系建设项目</font></span><span style="color: rgb(0, 0, 0); font-family: 仿宋_GB2312; font-size: 16pt;"><font face="仿宋_GB2312">进行公开,欢迎具备条件的国内投标供应商参加投标。</font></span></p>                       <br><p>附件如下:</p></div></td></tr></tbody></table></body>
</html>

2.2 案例说明

需求一:取得div id是"ZtbzbggDetail_jsgc1_content"下的所有子节点的标签名和文本

需求二:取得div id是"ZtbzbggDetail_jsgc1_content"下的所有子孙节点的标签名和文本

2.3 代码验证

from bs4 import BeautifulSoup# Serial descendants and children
from bs4 import NavigableString,Comment
def descendantschild(inFile):for n in range(0, 1, 1):f = open(inFile, encoding="utf-8")bs = BeautifulSoup(f.read(), 'html.parser') divroot = bs.find('div', {'id': 'ZtbzbggDetail_jsgc1_content'})print("***************tag'children output***************")        for tag in divroot.children:if isinstance(tag, NavigableString):continueelse:print(str(tag.name+"\t"+tag.get_text())print("***************tag'descendants output***************") for tag in divroot.descendants:if isinstance(tag, NavigableString):continueelse:print(tag.name+"\t"+tag.get_text())if __name__ == '__main__':descendantschild(r'D:/child.html')

2.4结果输出

Children输出:

***************tag'children output***************
34      p农业农村局农业生产经营主体及其产品追溯体系建设项目公开公告46      p       政府采购中心受农业农村局的委托,现对 农业农村局农业生产经营主体及其产品追溯体系建设项目进行公开,欢迎具备条件的国内投标
供应商参加投标。
47      br
48      p       附件如下:

Descendants输出

*********tag'descendants output***************
p农业农村局农业生产经营主体及其产品追溯体系建设项目公开公告b农业农村局农业生产经营主体及其产品追溯体系建设项目span
农业农村局农业生产经营主体及其产品追溯体系建设项目font    农业农村局农业生产经营主体及其产品追溯体系建设项目
b公开公告span
公开公告font    公开公告
p       政府采购中心受农业农村局的委托,现对 农业农村局农业生产经营主体及其产品追溯体系建设项目进行公开,欢迎具备条件的国内投标供应商参
加投标。
span    政府采购中心
font    政府采购中心
span    受
font    受
span    农业农村局
font    农业农村局
span    的委托,现对
font    的委托,现对
span    农业农村局农业生产经营主体及其产品追溯体系建设项目
font    农业农村局农业生产经营主体及其产品追溯体系建设项目
span    进行公开,欢迎具备条件的国内投标供应商参加投标。
font    进行公开,欢迎具备条件的国内投标供应商参加投标。
br
p       附件如下:

3 其它

暂无。

BeautifulSoup children descendants对比相关推荐

  1. 16 `bs对象.节点名div.属性contents` children descendants 获取子节点 子孙节点

    16 bs对象.节点名div.属性contents children descendants 获取子节点 子孙节点 文章目录 16 `bs对象.节点名div.属性contents` children ...

  2. BeautifulSoup的高级应用 之 contents children descendants string strings stripped_strings

    继上一节.BeautifulSoup的高级应用 之 find findAll,这一节,主要解说BeautifulSoup有关的其它几个重要应用函数. 本篇中,所使用的html为: html_doc = ...

  3. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  4. Python 第三方模块之 beautifulsoup(bs4)- 解析 HTML

    简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下:官网文档 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索. ...

  5. [python爬虫] 招聘信息定时系统 (一).BeautifulSoup爬取信息并存储MySQL

    这系列文章主要讲述,如何通过Python爬取招聘信息,且爬取的日期为当前天的,同时将爬取的内容保存到数据库中,然后制作定时系统每天执行爬取,最后是Python调用相关库发送短信到手机.         ...

  6. beautifulsoup html内容_用python3教你任意Html主内容提取

    0x1 工具准备 工欲善其事必先利其器,爬取语料的根基便是基于python. 我们基于python3进行开发,主要使用以下几个模块:requests.lxml.json. 简单介绍一个各模块的功能 0 ...

  7. 从零开始学习python-新手学习python-从零开始学习

    1.学习python urllib2 常用方法 urlopen(url, data, timeout) urllib2.Request() urllib.urlencode() params = {} ...

  8. 自学python从零开始学_新手学习python-从零开始学习

    1.学习python urllib2 常用方法 urlopen(url, data, timeout) urllib2.Request() urllib.urlencode() params = {} ...

  9. Beautiful Soup 4.4.0 文档

    Beautiful Soup 4.4.0 文档 文章目录 Beautiful Soup 4.4.0 文档 @[toc] 快速开始 安装 Beautiful Soup 安装完成后的问题 安装解析器 如何 ...

最新文章

  1. 一口气说出 4 种分布式一致性 Session 实现方式,面试杠杠的~
  2. HBuilder 无法检测到XCode上的模拟器
  3. Docker 私服Registry简介与使用Docker-Compose安装Registry
  4. JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别
  5. 远程监督关系抽取漫谈:结合知识图谱和图神经网络
  6. Taro+react开发(57) 图片引入
  7. 12001.linux应用程序之i2c编程
  8. c语言读入图片matlab,将数据从matlab文件读入C语言
  9. Linux内存管理 brk(),mmap()系统调用源码分析1:基础部分
  10. 水晶报表基础入门——4.水晶报表排序、分组技术
  11. python机器学习库sklearn——生成样本数据
  12. 03.CSS选择器--交集并集选择器
  13. SpringBoot结合ActiveMQ(同时支持Queue和Topic)
  14. 【软件工程】 期末考试 重点复习
  15. 小米蓝牙键盘怎么连接_不是吐槽,是推荐!买了个小米旗下的蓝牙双模键盘。。。...
  16. 高级语言与低级语言如何定义?解释型语言和编译型语言又如何区别?
  17. 常用工具:用yEd工具画流程图实用步骤
  18. OCL(对象约束语言)简易教程
  19. Kotlin入门:中?和!!的区别
  20. 正则中圆括号()方括号[]大括号{}的区别和用法

热门文章

  1. opengl加载显示3D模型X3D类型文件
  2. OpenCASCADE:使用 扩展数据交换XDE之形状和组件
  3. wxWidgets:键码KeyCodes
  4. boost::smart_ptr模块智能指针测试程序
  5. 用作键提取器的函数的 Boost.MultiIndex 示例
  6. boost::json模块实现远程过程调用的测试程序
  7. GDCM:gdcm::VR的测试程序
  8. DCMTK:DIMSE_dumpMessage()的测试程序
  9. VTK:绘图之SpiderPlot
  10. VTK:相互作用之KeypressObserver