Beautiful Soup parses anything you give it, and does the tree traversal stuff for you.

BeautifulSoup库是解析、遍历、维护 “标签树” 的功能库(遍历,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问)。https://www.crummy.com/software/BeautifulSoup

BeautifulSoup库我们常称之为bs4,导入该库为:from bs4 import BeautifulSoup。其中,import BeautifulSoup即主要用bs4中的BeautifulSoup类。

bs4库解析器

BeautifulSoup类的基本元素

1 import requests

2 from bs4 import BeautifulSoup

3

4 res = requests.get('http://www.pmcaff.com/site/selection')

5 soup = BeautifulSoup(res.text,'lxml')

6 print(soup.a)

7 # 任何存在于HTML语法中的标签都可以用soup.访问获得,当HTML文档中存在多个相同对应内容时,soup.返回第一个。

8

9 print(soup.a.name)

10 # 每个都有自己的名字,可以通过.name获取,字符串类型

11

12 print(soup.a.attrs)

13 print(soup.a.attrs['class'])

14 # 一个可能有一个或多个属性,是字典类型

15

16 print(soup.a.string)

17 # .string可以取到标签内非属性字符串

18

19 soup1 = BeautifulSoup('

20 print(soup1.p.string)

21 print(type(soup1.p.string))

22 # comment是一种特殊类型,也可以通过.string取到

运行结果:

登录

a

{'href': '', 'class': ['no-login']} ['no-login']

登录

这里是注释

bs4库的HTML内容遍历

HTML的基本结构

标签树的下行遍历

其中,BeautifulSoup类型是标签树的根节点。

1 # 遍历儿子节点

2 for child in soup.body.children:

3 print(child.name)

4

5 # 遍历子孙节点

6 for child in soup.body.descendants:

7 print(child.name)

标签树的上行遍历

1 # 遍历所有先辈节点时,包括soup本身,所以要if...else...判断

2 for parent in soup.a.parents:

3 if parent is None:

4 print(parent)

5 else:

6 print(parent.name)

运行结果:

div

div

body

html

[document]

标签树的平行遍历

1 # 遍历后续节点

2 for sibling in soup.a.next_sibling:

3 print(sibling)

4

5 # 遍历前续节点

6 for sibling in soup.a.previous_sibling:

7 print(sibling)

bs4库的prettify()方法

prettify()方法可以将代码格式搞的标准一些,用soup.prettify()表示。在PyCharm中,用print(soup.prettify())来输出。

python中bs4_python bs4库相关推荐

  1. python中nlp的库_用于nlp的python中的网站数据清理

    python中nlp的库 The most important step of any data-driven project is obtaining quality data. Without t ...

  2. python中nlp的库_单词袋简介以及如何在Python for NLP中对其进行编码

    python中nlp的库 by Praveen Dubey 通过Praveen Dubey 单词词汇入门以及如何在Python中为NLP 编写代码的简介 (An introduction to Bag ...

  3. python中的迭代库

    python中的迭代库为itertools,如果需要输出详细,需要使用类型工厂函数,如list,tuple将结果转换 itertools.product:product(A,B) 相当于((x, y) ...

  4. python中调用c库

    python中调用c库 2013-04-23 15:34:52|  分类: python核心编程 |  标签:python  makefile   |举报 |字号 订阅 参考地址:http://my. ...

  5. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  6. 利用python中的csv库读写csv文件

    利用python中的csv库读写csv文件 python读写csv文件就我知道的方法有:1)利用csv库,2)利用读写txt文件的方式处理,3)利用numpy或pandas库处理 在这篇博客中,博主就 ...

  7. 用python中的turtle库绘制一些有趣的图

    最近有个在读大学的女生,想要我帮忙用python画几个图,在画的过程中觉得有些图还挺有意思的,分享给大家.    1 图1    第一个图是蚊香,感兴趣的小伙伴可以自己尝试在python中用turtl ...

  8. python中的sheet,Python中的Smartsheet库:模块'smartsheet.sheets'没有属性'sheets'

    我正在尝试在python中使用smartsheet库. 使用'$ pip install smartsheet-python-sdk'完成pip安装. 我使用以下代码在令牌上进行了测试. import ...

  9. python中使用requests库获取昵图网图片,且正则中re.S的用法

    python中使用requests库获取图片,且正则表达式中re.S的用法以及r.text和r.content的区别和搜索关键词 这里我获取的是昵图网的图片 代码附上 这里我获取的是2020的图片 i ...

最新文章

  1. VS2005右键点击转到定义后出现“未定义符号”的提示及其解决
  2. Java中 EvenQueue.invokeLater用法
  3. java file函数_java File类的使用以及一些函数
  4. 收集iOS程序的代码覆盖率
  5. Connected to an idle instance问题的小小仇恨
  6. 致我测试之路的“七年之痒”
  7. JVM进阶之路, 不然又要被面试官吊打了
  8. C++自学14:关系运算符(bool/std::boolalpha)
  9. 千兆云路由器Dlink850L10个0Day漏洞成筛子 PoC满天飞 随便拿Root权限
  10. SpringContext扩展BeanFactory
  11. [2018.10.11 T1] 锻造
  12. 拉普拉斯变换转换简表
  13. matlab gui 毕业论文,MATLAB GUI课件设计
  14. pytorch-cpn可视化标注信息
  15. Problem A: 小勇学分数
  16. 实测 ubuntu20.04 机械式激光雷达与相机联合标定
  17. 计算机开机后黑屏一闪一闪怎么办,Win7开机后黑屏左上角光标闪烁的解决方法...
  18. 编程题--疯狂序列----京东大数据笔试
  19. 代码质量有哪些评判标准?
  20. OpenCV读取显示图片报错size.width>0

热门文章

  1. win32中如何使用CString
  2. VC批量拷贝,移动,删除文件---SHFileOperation
  3. 被 Kafka 虐的日子,太惨了……
  4. Kafka解惑之Old Producer(2)——Sync Analysis
  5. OS- -I/O之I/O软件原理及层次结构
  6. 音视频技术开发周刊(第130期)
  7. 聚焦北京,探秘多媒体开发新趋势(内附资料下载)
  8. 计算机网络知识点补充
  9. Javascript 多线程编程​的前世今生
  10. svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted