【文档说明】Python爬虫程序设计KC24课件.pptx,共(13)页,60.746 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44424.html
以下为本文档部分文字说明:
2.4.1获取元素节点的父节点2.4.1获取元素节点的父节点BeautifulSoup通过:tag.parent获取tag节点的父节点,其中根节点<html>的父节点是名称为[document]的节点,这个[document]节点的父节点是None。例2-4-1:找出文档中<pc
lass="title"><b>TheDormouse'sstory</b></p>的<b>元素节点的所有父节点的名称。frombs4importBeautifulSoupdoc='''<html><head><title>TheD
ormouse'sstory</title></head><body><pclass="title"><b>TheDormouse'sstory</b></p><pclass="story">Onceuponatimetherewerethreelittlesisters;andthe
irnameswere<ahref="http://example.com/elsie"class="sister"id="link1">Elsie</a>,<ahref="http://example.com/lacie"class="sister"id="link2"
>Lacie</a>and<ahref="http://example.com/tillie"class="sister"id="link3">Tillie</a>;andtheylivedatthebottomofa
well.</p><pclass="story">...</p></body></html>'''soup=BeautifulSoup(doc,"lxml")print(soup.name)tag=soup.find("b
")whiletag:print(tag.name)tag=tag.parent程序结果:[document]bpbodyhtml[document]由此可见<b>节点的父节点依次为<p>、<body>、<html>2.4.2获取
元素节点的直接子元素节点2.4.2获取元素节点的直接子元素节点BesutifulSoup通过:tag.children获取tag节点的所有直接子节点,包括element、text等类型的节点。例2-4-2:获取<p>元素的所有直接子元素节点f
rombs4importBeautifulSoupdoc='''<html><head><title>TheDormouse'sstory</title></head><body><pclass="title"><b>Th
e<i>Dormouse's</i>story</b>Onceuponatime...</p></body></html>'''soup=BeautifulSoup(doc,"lxml")tag=soup.find("p")for
xintag.children:print(x)程序结果:<b>The<i>Dormouse's</i>story</b>Onceuponatime...<p>节点下面有2个直接子节点元素,一个是element类型的节点<b>The<i>Dormouse
's</i>story</b>,另外一个是text类型的节点Onceuponatime...2.4.3获取元素节点的所有子孙元素节点2.4.3获取元素节点的所有子孙元素节点BesutifulSoup通过:tag.desendants获取tag节点的所有子孙节点元素,包
括element、text等类型的节点。例2-4-3:获取<p>元素的所有子孙元素节点frombs4importBeautifulSoupdoc='''<html><head><title>TheDormouse'sstory</title></head
><body><pclass="title"><b>The<i>Dormouse's</i>story</b>Onceuponatime...</p></body></html>'''soup=Beaut
ifulSoup(doc,"lxml")tag=soup.find("p")forxintag.descendants:print(x)程序结果:<b>The<i>Dormouse's</i>story</b>The<i>Dormouse's</i>Dormouse'sstoryOnceupona
time...由此可见<p>元素节点下面有下面几个子孙节点:The:这是一个text孙子节点,它是<b>的子节点;<i>Dormouse's</i>:这是<p>下面的一个element孙子节点,是<b>的子节点;Dormouse's:这是<p>下面的孙子text节点,即<i>Dormouse's<
/i>的子节点;story:这是<p>下面的孙子text节点,它是<b>的子节点;Onceuponatime...:它是<p>下面的text子节点;2.4.4获取元素节点的兄弟节点BesutifulSoup通过:tag.next_si
blingtag.previous_sibling来获取下一个和前一个兄弟节点,其中tag.next_sibling是tag的临近的下一个兄弟节点,tag.previous_sibling是tag的临近的前一个兄弟节点。例2-4-4:查找前后兄弟节点frombs4importBeaut
ifulSoupdoc='''<html><head><title>TheDormouse'sstory</title></head><body><pclass="title"><b>The<i>Dormouse
's</i>story</b>Onceuponatime...</p></body></html>'''soup=BeautifulSoup(doc,"lxml")tag=soup.find("b")print(tag.previou
s_sibling)print(tag.next_sibling)tag=soup.find("i")print(tag.previous_sibling)print(tag.next_sibling)程序结果:NoneOnceuponatime...Thestory由此可见<b>节点的前面兄
弟节点为None,下一个兄弟节点是text节点"Onceuponatime..",<i>节点的前一个兄弟节点是text节点"The",下一个是text节点"story"。