beautifulsoup 查询子节点 .children与 .contents


 

举例:

<h2 class='total fl'>
'共找到'
  <span> 1219 </span>
'个'
<a class="xiaoquCount" href="/xiaoqu/jiading/">嘉定小区</a>
</h2>

children的结果是一个可迭代对象:

xiaoqu_num=bs.find('h2',class_='total fl').children
print(xiaoqu_num)

<list_iterator object at 0x000002049C77B070>

要使用for循环来取得内容:

for c in xiaoqu_num:
    print(c)

共找到
<span> 1219 </span><a class="xiaoquCount" href="/xiaoqu/jiading/">嘉定小区</a>

contents返回的是一个子节点的列表,可以直接读取:

xiaoqu_num=bs.find('h2',class_='total fl').contents
print(xiaoqu_num)
print(xiaoqu_num[0])

['共找到', <span> 1219 </span>, '', <a class="xiaoquCount" href="/xiaoqu/jiading/">嘉定小区</a>]
'共找到'

两个方法得到的子节点都包括属性、文本、子标签,子标签整体算做一个子节点

区别是一个只能迭代,一个可以迭代,也可以直接取数据

如果要将所有子标签的子孙节点也迭代,使用.descendants

 xiaoqu_num=bs.find('h2',class_='total fl').descendants
 print(xiaoqu_num)
 for c in xiaoqu_num:
     print(c)

<generator object Tag.descendants at 0x000002049C567A50>
共找到
<span> 1219 </span>
 1219<a class="xiaoquCount" href="/xiaoqu/jiading/">嘉定小区</a>
嘉定小区

 

如果要继续查找子标签,使用.find()

xiaoqu_num=bs.find('h2',class_='total fl').find('span').text
print(xiaoqu_num)

1219

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM