首先,我们来看一个简单的网页https://www.pythonscraping.com/pages/page3.html,打开后:

右键“检查”(谷歌浏览器)查看元素:

用导航树的形式简单表示出来:

可知:

tr 是 table的子标签

tr、th、td、img、span 标签都是 table 的后代标签

一般情况下,bbs0bj.body.h1 选择的是 body 标签后代里的第一个 h1 标签,不会去找 body 外面的标签

类似的,bs0bj.div.findall("img") 会找到第一个div标签,然后获取这个 div 后代里面所有的img标签

1. 处理子标签和后代标签

如果你想获得子标签,可以用 .children 标签:

from urllib.request import urlopen
from bs4 import BeautifulSouphtml = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html)for child in bsObj.find("table",{"id":"giftList"}).children:print(child)

部分结果如下:

如果你用descendants()函数,就会获得每个后代标签

2. 处理兄弟标签

BeautifulSoup 中的 next_siblings()很擅长处理带标题行的表格:

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html, "html.parser")for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings:print(sibling) 

得到部分结果如下:

如果你很擅长找到一组兄弟标签中的最后一个标签,那么 previous_siblings() 函数

另外,next_sibling(),previous_siblings() 返回单个标签

3. 处理父亲标签

抓取网页的时候,父标签用到的很少,用 parent 和 parents 抓取,举个例子:

from urllib.request import urlopen
from bs4 import BeautifulSouphtml = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj = BeautifulSoup(html, "html.parser")
print(bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text())

输出:

$15.00
 
可以这样理解:
 
 

(1)选择图片标签

(2)选择图片标签的父标签<td>

(3)选择标签<td>前面的一个兄弟标签

(4)选择标签中的文字

参考资料:《Python网络数据采集》

$15.00

Python 库学习笔记—— BeautifulSoup 处理子标签、后代标签、兄弟标签和父标签相关推荐

  1. 深度学习常用python库学习笔记

    深度学习常用python库学习笔记 常用的4个库 一.Numpy库 1.数组的创建 (1)np.array() (2)np.zeros() (3)np.ones() (4)np.empty() (5) ...

  2. python库学习笔记——分组计算利器:pandas中的groupby技术

    最近处理数据需要分组计算,又用到了groupby函数,温故而知新. 分组运算的第一阶段,pandas 对象(无论是 Series.DataFrame 还是其他的)中的数据会根据你所提供的一个或多个键被 ...

  3. python xlwings 切片_Python xlwings库学习笔记(1)

    Python xlwings库学习笔记(1) Python是最近几年很火的编程语言,被办公自动化的宣传吸引入坑,办公自动化必然绕不开Excel的操作,能操作Excel的库有很多,例如: xlrd xl ...

  4. python标准库学习笔记

    原创:python标准库学习笔记 数据结构 bisect 模块里实现了一个向列表插入元素时也会顺便排序的算法. struct - 二进制数据结构:用途:在 Python 基本数据类型和二进制数据之间进 ...

  5. 全国计算机等级考试二级Python精品题库学习笔记1

    全国计算机等级考试二级Python精品题库学习笔记1 精品试卷01 精品试卷01程序题 基本操作题 2:随机验证码 基本操作题 3:比赛成绩计算 Turtle 绘图题:同心圆 简单应用题 2:员工工资 ...

  6. Python pillow库学习笔记

    Python pillow库学习笔记 PIL( Python Imaging Library)是 Python 的第三方图像处理库,由于其功能丰富,API 简洁易用,因此深受好评. 自 2011 年以 ...

  7. python自动化测试学习笔记合集三

    上次我们学到了redis的一些操作,下面来实际运用以下. 这里我们先来学习一下什么是cookie和session. 什么是Cookie 其实简单的说就是当用户通过http协议访问一个服务器的时候,这个 ...

  8. python模块学习笔记

    python模块学习笔记 1.Python自动发送邮件smtplib 2.制作二维码图片MyQR 3.绝对值模块math 4.CSV模块 5.openpyxl 模块,操作Excel文件 ExcelMa ...

  9. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

最新文章

  1. jenkins maven没有使用全局设置文件地址_持续集成工具Jenkins看这篇就够啦!
  2. 由mysql分区想到的分表分库的方案
  3. python 堆_40道Python经典面试题(附答案)
  4. python mysql 分号_Python中使用MySQL
  5. Linux升级内核的正确姿势
  6. 将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架
  7. 1777亿重罚,苹果瑟瑟发抖!
  8. CCF NOI1064 计算斐波那契第n项
  9. oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx
  10. Centos7 只启用iptables 禁用firewalld功能.
  11. linux awk使用详解
  12. 一套优秀的直播系统源码是什么样的?起码要有这五个模块
  13. As of Dart Sass 2.0.0 弃用 除法符号“/” element-ui自定义皮肤样式报错,但能运行
  14. HitPaw Watermark Remover v1.2.0.3 图片视频水印去除
  15. Application loader:ERROR ITMS-90168: The binary you uploaded was invalid.
  16. opencv 编译时出现的一个神奇bug,关于python,99%,链接
  17. DC-DC与LDO的区别及原理
  18. CPU使用率过高的原因及解决方法
  19. 【推荐系统】基于协同过滤的图书推荐系统
  20. nico和niconiconi dp详解

热门文章

  1. 湖南大学计算机类有哪些专业,湖南大学专业排名,招生专业目录(10篇)
  2. 微功耗霍尔开关在电子防盗锁中的应用
  3. 关于浏览器被hao123劫持的解决办法
  4. Chrom Debugger
  5. 蹒跚学步——C#之面向对象
  6. 微信小程序之仿微信漂流瓶
  7. Ardupilot飞控固件的仿真模拟
  8. AOV网(拓扑排序)和AOE网
  9. c代码实现 ifft运算_月光软件站 - 编程文档 - 其他语言 - 时间抽选基2FFT及IFFT算法C语言实现...
  10. Vuejs设计与实现 —— 渲染器核心 Diff 算法