python中bs4_python bs4库

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())来输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值