![Python爬虫程序设计KC25课件_第1页](http://file4.renrendoc.com/view/6369353d960a8f43970fc3218929762f/6369353d960a8f43970fc3218929762f1.gif)
![Python爬虫程序设计KC25课件_第2页](http://file4.renrendoc.com/view/6369353d960a8f43970fc3218929762f/6369353d960a8f43970fc3218929762f2.gif)
![Python爬虫程序设计KC25课件_第3页](http://file4.renrendoc.com/view/6369353d960a8f43970fc3218929762f/6369353d960a8f43970fc3218929762f3.gif)
![Python爬虫程序设计KC25课件_第4页](http://file4.renrendoc.com/view/6369353d960a8f43970fc3218929762f/6369353d960a8f43970fc3218929762f4.gif)
![Python爬虫程序设计KC25课件_第5页](http://file4.renrendoc.com/view/6369353d960a8f43970fc3218929762f/6369353d960a8f43970fc3218929762f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.5.1使用CSS语法2.5.1使用CSS语法2.5.1使用CSS语法BeautifulSoup除了可以用find与find_all函数查找HTML文档树的节点元素外,还可以采用CSS类似的语法来查询,规则是:tag.select(css)其中tag是一个bs4.element.Tag对象,即HTML中的一个element节点元素,select是它的查找方法,css是类似css语法的一个字符串,一般结构如下:[tagName][attName[=value]]其中[...]部分是可选的;tagName是元素名称,如果没有指定就是所有元素;attName=value是属性名称,value是它对应的值,可以不指定属性,在指定了属性后也可以不指定值;tag.select(css)返回一个bs4.element.Tag的列表,哪怕只有一个元素也时一个列表;2.5.1使用CSS语法例2-5-1:soup.select("a")查找文档中所有<a>元素节点;soup.select("pa")查找文档中所有<p>节点下的所有<a>元素节点;soup.select("p[class='story']a")查找文档中所有属性class="story"的<p>节点下的所有<a>元素节点;soup.select("p[class]a")查找文档中所有具有class属性的<p>节点下的所有<a>元素节点;soup.select("a[id='link1']")查找属性id="link1"的<a>节点;soup.select("bodyheadtitle")查找<body>下面<head>下面的<title>节点;soup.select("body[class]")查找<body>下面所有具有class属性的节点;soup.select("body[class]a")查找<body>下面所有具有class属性的节点下面的<a>节点;<head>下面的<title>节点;例2-5-1:soup.select("a")查找文档中所例2-5-2:查找HTML文档中所有<p>下面的<a>的链接frombs4importBeautifulSoupdoc='''<html><head><title>TheDormouse'sstory</title></head><body><pclass="title"><b>TheDormouse'sstory</b></p><pclass="story">Onceuponatimetherewerethreelittlesisters;andtheirnameswere<ahref="/elsie"class="sister"id="link1">Elsie</a>,<ahref="/lacie"class="sister"id="link2">Lacie</a>and<ahref="/tillie"class="sister"id="link3">Tillie</a>;andtheylivedatthebottomofawell.</p><pclass="story">...</p></body></html>'''soup=BeautifulSoup(doc,"lxml")tags=soup.select("p[class='story']a")fortagintags:print(tag["href"])
例2-5-2:查找HTML文档中所有<p>下面的<a>的链程序结果:/elsie/lacie/tillie
另外我们通过tags=soup.select("pa")tags=soup.select("a")tags=soup.select("p[class]a")等也可以得到一样的结果。程序结果:2.5.2属性的语法规则2.5.2属性的语法规则在CSS结构中的[attName=value]中表示属性attrName与value相等,也可以指定不等、包含等运算关系,具体运算如下表:选择器描述[attName]用于选取带有指定属性的元素。[attName=value]用于选取带有指定属性和值的元素。[attName^=value]匹配属性值以指定值开头的每个元素。[attName$=value]匹配属性值以指定值结尾的每个元素。[attrName*=value]匹配属性值中包含指定值的每个元素。在CSS结构中的[attName=value]中表示属性at因此:soup.select("a[href='/elsie']")查找href="/elsie"的<a>节点;soup.select("a[href$='sie']")查找href以"sie"结尾的<a>节点;soup.select("a[href^='']")查找href以""开始的<a>节点;soupselect("a[href*='example']")查找href的值中包含"example"字符串的<a>节点;因此:2.5.3select查找子孙节点2.5.3select查找子孙节点2.5.3select查找子孙节点在select(css)中的css有多个节点时,节点元素之间用空格分开,就是查找子孙节点,例如soup.select("divp")是查找所有<div>节点下面的所有子孙<p>节点。
例2-5-3:查找子孙节点frombs4importBeautifulSoupdoc="<div><p>A</p><span><p>B</p></span></div><div><p>C</p></div>"soup=BeautifulSoup(doc,"lxml")tags=soup.select("divp")fortagintags:print(tag)
2.5.3select查找子孙节点程序结果:<p>A</p><p>B</p><p>C</p>其中tags=soup.select("divp")是查找<div>下面的所有子孙节点<p>,因此包含<span>下面的<p>B</p>。程序结果:2.5.4select查找直接子节点2.5.4select查找直接子节点2.5.4select查找直接子节点在select(css)中的css有多个节点时,节点元素之间用">"分开(注意>的前后至少包含一个空格),就是查找直接子节点,例如soup.select("div>p")是查找所有<div>节点下面的所有直接子节点<p>,不包含孙节点。2.5.4select查找直接子节点例2-5-4:查找直接子节点frombs4importBeautifulSoupdoc="<div><p>A</p><span><p>B</p></span></div><div><p>C</p></div>"soup=BeautifulSoup(doc,"lxml")tags=soup.select("div>p")fortagintags:print(tag)
程序结果:<p>A</p><p>C</p>其中tags=soup.select("div>p")是查找<div>下面的直接子节点<p>,因此不包含<span>下面的<p>B</p>。例2-5-4:查找直接子节点2.5.5select查找兄弟节点2.5.5select查找兄弟节点2.5.5select查找兄弟节点在select中用"~"连接两个节点表示查找前一个节点后面的所有同级别的兄弟节点(注意~号前后至少有一个空格),例如soup.select("div~p")查找<div>后面的所有同级别的<p>兄弟节点。在select中用"+"连接两个节点表示查找前一个节点后面的第一个同级别的兄弟节点(注意+号前后至少有一个空格)2.5.5select查找兄弟节点例2-5-5:查找兄弟节点frombs4importBeautifulSoupdoc="<body>demo<div>A</div><b>X</b><p>B</p><span><p>C</p></span><p>D</p></div></body>"soup=BeautifulSoup(doc,"lxml")print(soup.prettify())tags=soup.select("div~p")fortagintags:print(tag)print()tags=soup.select("div+p")fortagintags:print(tag)例2-5-5:查找兄弟节点程序结果:<p>B</p><p>D</p>其中tags=soup.select("div~p")找到<div>后面同级别的所有<p>节点,不包含<span>中的<p>C</p>,因为它与<div>不同级别。而tags=soup.select("div+p")要找<div>的下一个兄弟节点<p>,但是<div>的下一个兄弟节点是<b>X</b>,不是<p>节点,因此没有找到,注意结果不是<p>B</p>。程序结果:2.5.1使用CSS语法2.5.1使用CSS语法2.5.1使用CSS语法BeautifulSoup除了可以用find与find_all函数查找HTML文档树的节点元素外,还可以采用CSS类似的语法来查询,规则是:tag.select(css)其中tag是一个bs4.element.Tag对象,即HTML中的一个element节点元素,select是它的查找方法,css是类似css语法的一个字符串,一般结构如下:[tagName][attName[=value]]其中[...]部分是可选的;tagName是元素名称,如果没有指定就是所有元素;attName=value是属性名称,value是它对应的值,可以不指定属性,在指定了属性后也可以不指定值;tag.select(css)返回一个bs4.element.Tag的列表,哪怕只有一个元素也时一个列表;2.5.1使用CSS语法例2-5-1:soup.select("a")查找文档中所有<a>元素节点;soup.select("pa")查找文档中所有<p>节点下的所有<a>元素节点;soup.select("p[class='story']a")查找文档中所有属性class="story"的<p>节点下的所有<a>元素节点;soup.select("p[class]a")查找文档中所有具有class属性的<p>节点下的所有<a>元素节点;soup.select("a[id='link1']")查找属性id="link1"的<a>节点;soup.select("bodyheadtitle")查找<body>下面<head>下面的<title>节点;soup.select("body[class]")查找<body>下面所有具有class属性的节点;soup.select("body[class]a")查找<body>下面所有具有class属性的节点下面的<a>节点;<head>下面的<title>节点;例2-5-1:soup.select("a")查找文档中所例2-5-2:查找HTML文档中所有<p>下面的<a>的链接frombs4importBeautifulSoupdoc='''<html><head><title>TheDormouse'sstory</title></head><body><pclass="title"><b>TheDormouse'sstory</b></p><pclass="story">Onceuponatimetherewerethreelittlesisters;andtheirnameswere<ahref="/elsie"class="sister"id="link1">Elsie</a>,<ahref="/lacie"class="sister"id="link2">Lacie</a>and<ahref="/tillie"class="sister"id="link3">Tillie</a>;andtheylivedatthebottomofawell.</p><pclass="story">...</p></body></html>'''soup=BeautifulSoup(doc,"lxml")tags=soup.select("p[class='story']a")fortagintags:print(tag["href"])
例2-5-2:查找HTML文档中所有<p>下面的<a>的链程序结果:/elsie/lacie/tillie
另外我们通过tags=soup.select("pa")tags=soup.select("a")tags=soup.select("p[class]a")等也可以得到一样的结果。程序结果:2.5.2属性的语法规则2.5.2属性的语法规则在CSS结构中的[attName=value]中表示属性attrName与value相等,也可以指定不等、包含等运算关系,具体运算如下表:选择器描述[attName]用于选取带有指定属性的元素。[attName=value]用于选取带有指定属性和值的元素。[attName^=value]匹配属性值以指定值开头的每个元素。[attName$=value]匹配属性值以指定值结尾的每个元素。[attrName*=value]匹配属性值中包含指定值的每个元素。在CSS结构中的[attName=value]中表示属性at因此:soup.select("a[href='/elsie']")查找href="/elsie"的<a>节点;soup.select("a[href$='sie']")查找href以"sie"结尾的<a>节点;soup.select("a[href^='']")查找href以""开始的<a>节点;soupselect("a[href*='example']")查找href的值中包含"example"字符串的<a>节点;因此:2.5.3select查找子孙节点2.5.3select查找子孙节点2.5.3select查找子孙节点在select(css)中的css有多个节点时,节点元素之间用空格分开,就是查找子孙节点,例如soup.select("divp")是查找所有<div>节点下面的所有子孙<p>节点。
例2-5-3:查找子孙节点frombs4importBeautifulSoupdoc="<div><p>A</p><span><p>B</p></span></div><div><p>C</p></div>"soup=BeautifulSoup(doc,"lxml")tags=soup.select("divp")fortagintags:print(tag)
2.5.3select查找子孙节点程序结果:<p>A</p><p>B</p><p>C</p>其中tags=soup.select("divp")是查找<div>下面的所有子孙节点<p>,因此包含<span>下面的<p>B</p>。程序结果:2.5.4select查找直接子节点2.5.4select查找直接子节点2.5.4select查找直接子节点在select(css)中的css有多个节点时,节点元素之间用">"分开(注意>的前后至少包含一个空格),就是查找直接子节点,例如soup.select("div>p")是查找所有<div>节点下面的所有直接子节点<p>,不包含孙节点。2.5.4select查找直接子节点例2-5-4:查找直接子节点frombs4importBeautifulSoupdoc="<div><p>A</p><span><p>B</p></span></div><div><p>C</p></div>"soup=BeautifulSoup(doc,"lxml")tags=soup.select("div>p")fortagintags:print(tag)
程序结果:<p>A</p><p>C</p>其中tags=soup.select("div>p")是查找<div>下面的直接子节点<p>,因此不包含<span>下面的<p>B</p>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏州苏教版三年级数学上册第一单元《两、三位数乘一位数》听评课记录
- 七年级数学上册第5章一元一次方程5.4一元一次方程的应用第4课时利率等其他问题听评课记录(新版浙教版)
- 人教版数学七年级下册5.1.2《垂线》听评课记录2
- 统编版初中语文七年级下册第四课《孙权劝学》听评课记录
- 新版湘教版秋八年级数学上册第四章一元一次不等式组课题不等式听评课记录
- 听评四年级音乐课记录
- 听评课记录七年级历史
- 七年级数学上册第11课时有理数的乘法运算律听评课记录新湘教版
- 人教版七年级数学上册:1.4.2 《有理数的除法》听评课记录
- 粤人版地理七年级下册《第三节 巴西》听课评课记录2
- 2025警察公安派出所年终总结工作汇报
- 年新增1万吨SQ-06Li锂吸附材料技改扩能项目环评资料环境影响
- 机动车检测站新换版20241124质量管理手册
- 智研咨询发布-2025年中国少儿编程行业市场竞争格局、行业政策及需求规模预测报告
- 分管安全副校长在教师会议上讲话:到底如何抓好安全从哪些细节来抓安全
- 湘教版七年级上册数学期末考试试卷带答案
- 中国游戏发展史课件
- 校园安全视频监控维保方案
- 第三单元名著导读《骆驼祥子》整本书阅读教学设计+2023-2024学年统编版语文七年级下册
- 工程数学试卷及答案
- DB11T 211-2017 园林绿化用植物材料 木本苗
评论
0/150
提交评论