Python爬虫程序设计KC25

PPT
  • 阅读 93 次
  • 下载 0 次
  • 页数 18 页
  • 大小 67.475 KB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档10.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
Python爬虫程序设计KC25
可在后台配置第一页与第二页中间广告代码
Python爬虫程序设计KC25
可在后台配置第二页与第三页中间广告代码
Python爬虫程序设计KC25
可在后台配置第三页与第四页中间广告代码
Python爬虫程序设计KC25
Python爬虫程序设计KC25
还剩5页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 18
  • 收藏
  • 违规举报
  • © 版权认领
下载文档10.00 元 加入VIP免费下载
文本内容

【文档说明】Python爬虫程序设计KC25.pptx,共(18)页,67.475 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2414.html

以下为本文档部分文字说明:

2.5.1使用CSS语法2.5.1使用CSS语法BeautifulSoup除了可以用find与find_all函数查找HTML文档树的节点元素外,还可以采用CSS类似的语法来查询,规则是:tag.select(css)其中tag是一个bs4.eleme

nt.Tag对象,即HTML中的一个element节点元素,select是它的查找方法,css是类似css语法的一个字符串,一般结构如下:[tagName][attName[=value]]其中[...]部分是可选的;tagName是元素名称,如果

没有指定就是所有元素;attName=value是属性名称,value是它对应的值,可以不指定属性,在指定了属性后也可以不指定值;tag.select(css)返回一个bs4.element.Tag的列表,哪怕只有一个元素也时一个列表;例2-5-1:soup.s

elect("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("bodyheadtit

le")查找<body>下面<head>下面的<title>节点;soup.select("body[class]")查找<body>下面所有具有class属性的节点;soup.select("body[c

lass]a")查找<body>下面所有具有class属性的节点下面的<a>节点;<head>下面的<title>节点;例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;an

dtheirnameswere<ahref="http://example.com/elsie"class="sister"id="link1">Elsie</a>,<ahref="http://example.com/l

acie"class="sister"id="link2">Lacie</a>and<ahref="http://example.com/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"])程序

结果:http://example.com/elsiehttp://example.com/laciehttp://example.com/tillie另外我们通过tags=soup.select("p

a")tags=soup.select("a")tags=soup.select("p[class]a")等也可以得到一样的结果。2.5.2属性的语法规则在CSS结构中的[attName=value]中表示属性attrName与value相等,也可以

指定不等、包含等运算关系,具体运算如下表:选择器描述[attName]用于选取带有指定属性的元素。[attName=value]用于选取带有指定属性和值的元素。[attName^=value]匹配属性值以指定值开头的每个元素。[attNa

me$=value]匹配属性值以指定值结尾的每个元素。[attrName*=value]匹配属性值中包含指定值的每个元素。因此:•soup.select("a[href='http://example.com/elsie']")查找href="http://example.com/els

ie"的<a>节点;•soup.select("a[href$='sie']")查找href以"sie"结尾的<a>节点;•soup.select("a[href^='http://example.com']

")查找href以"http://example.com"开始的<a>节点;•soupselect("a[href*='example']")查找href的值中包含"example"字符串的<a>节点;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.sele

ct("divp")fortagintags:print(tag)程序结果:<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查找直接子节点在select(css)中的css有多个节点时,节点元素之间用">"分开(注意>的前后至少包含一个空格),就是查找直接子节点,例如soup.select

("div>p")是查找所有<div>节点下面的所有直接子节点<p>,不包含孙节点。例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.5select查找兄弟节点2.5.5select查找兄弟节点在select中用"~

"连接两个节点表示查找前一个节点后面的所有同级别的兄弟节点(注意~号前后至少有一个空格),例如soup.select("div~p")查找<div>后面的所有同级别的<p>兄弟节点。在select中用"+"连接两个节点表示查找前一个节点后面的第一个同级别的兄弟节点(注意+号前后至少有一个空格

)例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(ta

g)程序结果:<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>。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?