Python 库学习笔记—— BeautifulSoup 处理子标签、后代标签、兄弟标签和父标签
首先,我们来看一个简单的网页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 处理子标签、后代标签、兄弟标签和父标签相关推荐
- 深度学习常用python库学习笔记
深度学习常用python库学习笔记 常用的4个库 一.Numpy库 1.数组的创建 (1)np.array() (2)np.zeros() (3)np.ones() (4)np.empty() (5) ...
- python库学习笔记——分组计算利器:pandas中的groupby技术
最近处理数据需要分组计算,又用到了groupby函数,温故而知新. 分组运算的第一阶段,pandas 对象(无论是 Series.DataFrame 还是其他的)中的数据会根据你所提供的一个或多个键被 ...
- python xlwings 切片_Python xlwings库学习笔记(1)
Python xlwings库学习笔记(1) Python是最近几年很火的编程语言,被办公自动化的宣传吸引入坑,办公自动化必然绕不开Excel的操作,能操作Excel的库有很多,例如: xlrd xl ...
- python标准库学习笔记
原创:python标准库学习笔记 数据结构 bisect 模块里实现了一个向列表插入元素时也会顺便排序的算法. struct - 二进制数据结构:用途:在 Python 基本数据类型和二进制数据之间进 ...
- 全国计算机等级考试二级Python精品题库学习笔记1
全国计算机等级考试二级Python精品题库学习笔记1 精品试卷01 精品试卷01程序题 基本操作题 2:随机验证码 基本操作题 3:比赛成绩计算 Turtle 绘图题:同心圆 简单应用题 2:员工工资 ...
- Python pillow库学习笔记
Python pillow库学习笔记 PIL( Python Imaging Library)是 Python 的第三方图像处理库,由于其功能丰富,API 简洁易用,因此深受好评. 自 2011 年以 ...
- python自动化测试学习笔记合集三
上次我们学到了redis的一些操作,下面来实际运用以下. 这里我们先来学习一下什么是cookie和session. 什么是Cookie 其实简单的说就是当用户通过http协议访问一个服务器的时候,这个 ...
- python模块学习笔记
python模块学习笔记 1.Python自动发送邮件smtplib 2.制作二维码图片MyQR 3.绝对值模块math 4.CSV模块 5.openpyxl 模块,操作Excel文件 ExcelMa ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
最新文章
- jenkins maven没有使用全局设置文件地址_持续集成工具Jenkins看这篇就够啦!
- 由mysql分区想到的分表分库的方案
- python 堆_40道Python经典面试题(附答案)
- python mysql 分号_Python中使用MySQL
- Linux升级内核的正确姿势
- 将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架
- 1777亿重罚,苹果瑟瑟发抖!
- CCF NOI1064 计算斐波那契第n项
- oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx
- Centos7 只启用iptables 禁用firewalld功能.
- linux awk使用详解
- 一套优秀的直播系统源码是什么样的?起码要有这五个模块
- As of Dart Sass 2.0.0 弃用 除法符号“/” element-ui自定义皮肤样式报错,但能运行
- HitPaw Watermark Remover v1.2.0.3 图片视频水印去除
- Application loader:ERROR ITMS-90168: The binary you uploaded was invalid.
- opencv 编译时出现的一个神奇bug,关于python,99%,链接
- DC-DC与LDO的区别及原理
- CPU使用率过高的原因及解决方法
- 【推荐系统】基于协同过滤的图书推荐系统
- nico和niconiconi dp详解
热门文章
- 湖南大学计算机类有哪些专业,湖南大学专业排名,招生专业目录(10篇)
- 微功耗霍尔开关在电子防盗锁中的应用
- 关于浏览器被hao123劫持的解决办法
- Chrom Debugger
- 蹒跚学步——C#之面向对象
- 微信小程序之仿微信漂流瓶
- Ardupilot飞控固件的仿真模拟
- AOV网(拓扑排序)和AOE网
- c代码实现 ifft运算_月光软件站 - 编程文档 - 其他语言 - 时间抽选基2FFT及IFFT算法C语言实现...
- Vuejs设计与实现 —— 渲染器核心 Diff 算法