读BeautifulSoup官方文档之与bs有关的对象和属性(3)
2016-06-16 15:06
351 查看
上一节说到.string的条件很苛刻, 如果某个tag里面包含了超过一个children, 就会返回None, 但是这里提供另外一种方式 .strings, 它返回的是一个generator,
比如对于 :
我们调用
结果如下 :
这样空格太多, 所以我们可用用另外一种stripped_strings来代替.strings, 它将所有完全由空白组成的字符串去除, 同时其他字符串中去除前后的空白字符, 它的返回结果如下 :
子标签到这里差不多就完了, 接下来看父标签和兄弟标签.
.parent的返回的当然就是父标签了, 同时父标签也是唯一的, 所以.parent返回的直接的tag对象, 另外还有一个.parents, 它返回一个generator, 里面装的是从当前标签的父标签开始的, 依次往上.(先是父标签, 然后是父标签的父标签, 以此类推指导html树的根标签...)
.next_sibling and .previous_sibling这个返回的是与该标签同级的标签的下一个标签和上一个标签, 这里有一点要特别注意, 在真正的html文件中, 一个标签的下一个标签或者上一标签很可能是换行...
结果是一个回车, 所以这里要特别小心...当然也有.next_siblings和.previous_siblings,同样也是生成器, 和之前类似, 这里就不多介绍了...
然后是.next_element和.previous_element, 返回的是按照parser的解析顺序的下一个tag和前一个tag, 某些情况下和next_sibling/previous_sibling 相同, 但也可能不同. 比如:
我们用sou.span.next_element的出来的将是xxxxxx, 而用next_sebling得出来的是' abcd', 同样的思路, 也有.next_elements 和 .previous_elements, 这里就不说了.
比如对于 :
<body>aa bb <b> aabbccdd </b> </body>
我们调用
for each in soup.body.strings: print(repr(each))
结果如下 :
'aa\nbb\n ' ' aabbccdd ' '\n'
这样空格太多, 所以我们可用用另外一种stripped_strings来代替.strings, 它将所有完全由空白组成的字符串去除, 同时其他字符串中去除前后的空白字符, 它的返回结果如下 :
'aa\nbb' 'aabbccdd'
子标签到这里差不多就完了, 接下来看父标签和兄弟标签.
.parent的返回的当然就是父标签了, 同时父标签也是唯一的, 所以.parent返回的直接的tag对象, 另外还有一个.parents, 它返回一个generator, 里面装的是从当前标签的父标签开始的, 依次往上.(先是父标签, 然后是父标签的父标签, 以此类推指导html树的根标签...)
.next_sibling and .previous_sibling这个返回的是与该标签同级的标签的下一个标签和上一个标签, 这里有一点要特别注意, 在真正的html文件中, 一个标签的下一个标签或者上一标签很可能是换行...
<b> ccccccccc</b> <b> <span>xxxxxx</span> abcd</b>
print(repr(soup.span.parent.previous_sibling))
结果是一个回车, 所以这里要特别小心...当然也有.next_siblings和.previous_siblings,同样也是生成器, 和之前类似, 这里就不多介绍了...
然后是.next_element和.previous_element, 返回的是按照parser的解析顺序的下一个tag和前一个tag, 某些情况下和next_sibling/previous_sibling 相同, 但也可能不同. 比如:
<b> <span>xxxxxx</span> abcd</b>
我们用sou.span.next_element的出来的将是xxxxxx, 而用next_sebling得出来的是' abcd', 同样的思路, 也有.next_elements 和 .previous_elements, 这里就不说了.
相关文章推荐
- WAMP RPC & Publish & Subscribe c++ 实现简析 & TCP 粘包处理方法
- java socket 服务端与客户端聊天
- 优化SQL查询:如何写出高性能SQL语句
- web 购物 加减小程序
- 团队开发项目客户端——游戏子系统的设计(上)
- jdbc简单小登陆demo
- SIP协议整理
- 论SOA架构的几种主要开发方式
- JavaScript 之HTML DOM EventListener
- 淡入淡出轮播(banner),自动按图片个数生成居中按钮——和派孔明
- android app开发遇到的一些问题(一)
- 使用自定义图标的MFC工程因原图标文件丢失无法building的解决办法
- h_errno
- Android--Demo_PullToRefresh(特效篇)
- xampp1.7 版本 安装步骤 以及mysql配置
- Python3 正则表达式
- 读取java项目下的文件
- 随笔-学习工具、教程 推荐
- Fragment生命周期
- 信息论、最大熵模型