【文档说明】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
:找出文档中<pclass="title"><b>TheDormouse'sstory</b></p>的<b>元素节点的所有父节点的名称。frombs4importBeautifulSoupdoc='''<html><head><
title>TheDormouse'sstory</title></head><body><pclass="title"><b>TheDormouse'sstory</b></p><pclass="story">Onceuponat
imetherewerethreelittlesisters;andtheirnameswere<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>;andtheylivedatthebottomofawell.</p><pclass="story">...</p></body></html>'''soup=BeautifulSoup(doc,"lxml")print(soup.name)tag=soup.find("b")w
hiletag: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>元素的所有直接子元素节点frombs4impor
tBeautifulSoupdoc='''<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("p")forxintag.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>元素的所有子孙元素节点frombs4importBeautif
ulSoupdoc='''<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("p")forxintag.descendants:print(x)程序结果:<b>The<i>Dormous
e's</i>story</b>The<i>Dormouse's</i>Dormouse'sstoryOnceuponatime...由此可见<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_siblingtag.previous_sibling来获取下一个和前一个兄弟节
点,其中tag.next_sibling是tag的临近的下一个兄弟节点,tag.previous_sibling是tag的临近的前一个兄弟节点。例2-4-4:查找前后兄弟节点frombs4importBeautifulSoupdoc='''<html><head
><title>TheDormouse'sstory</title></head><body><pclass="title"><b>The<i>Dormouse's</i>story</b>Onceuponatime...</p></body></html>'''soup=B
eautifulSoup(doc,"lxml")tag=soup.find("b")print(tag.previous_sibling)print(tag.next_sibling)tag=soup.f
ind("i")print(tag.previous_sibling)print(tag.next_sibling)程序结果:NoneOnceuponatime...Thestory由此可见<b>节点的前面兄
弟节点为None,下一个兄弟节点是text节点"Onceuponatime..",<i>节点的前一个兄弟节点是text节点"The",下一个是text节点"story"。