爬虫学习(二)---bs4库的使用

1. bs4库的安装

通过cmd安装 bs4

pip install beautifulsoup4

2. bs4的初始化

调用prettify()函数美化输出HTML源代码

import requests
from bs4 import BeautifulSoup
r = requests.get("http://www.baidu.com")
soup = BeautifulSoup(r.text,  "html.parser")  # 对html内容解析
print(soup.prettify())  # 美化输出

BeautifulSoup(参数1:源代码, 参数二: 解析器)

解析器来源特点
html.parserbs4库1、Python的内置标准库
2、执行速度适中
3、文档容错能力强
lxmlpip install lxml1、速度快
2、文档容错能力强
xmlpip install lxml1、速度快
2、唯一支持XML的解析器
html5libpip install html5lib1、最好的容错性
2、以浏览器的方式解析文档
3、生成HTML5格式的文档

3. BeautifulSoup类的基本元素

  1. Tag : 标签
  2. name:标签的名字
  3. attrs:标签的属性
  4. NavigableString : 标签内的内容(非注释部分)
  5. Comment : 标签内容的注释部分

可以通过对BeautifulSoup对象的调用访问文档内的标签

print(soup.p)  # 对soup对象的第一个p标签的调用

4. bs4标签树的下行遍历

属性作用
contnet子节点的列表,将所有儿子节点存入列表
children子节点的迭代类型,与’.contnet’类似,用于循环遍历儿子节点
descendants子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

使用

import requests
from bs4 import BeautifulSoup

r = requests.get("http://python123.io/ws/demo.html")
demo = r.text
soup = BeautifulSoup(demo,  "html.parser")

print("打印html标签内的所有字典点个数:" + str(len(soup.html.contents)), "打印其中第二个标签:" + soup.html.contents[1])

print("遍历所有子标签")  # 这里的子标签中还包含了 '\n'
for child in soup.html.children:
    print(child)

print("遍历包括的所有标签")  # 类似与深度优先遍历的方法
for child in soup.html.descendants:
    print(child)

5.bs4标签树的上行遍历

属性作用
.parent返回节点的父亲节点
.parents节点祖先的迭代类型,用于遍历祖先节点
print("打印节点p的父亲节点:", soup.p.parent)

print("遍历访问节点p的祖先节点")  # 类似于递归到终止条件时的逐步返回
for par in soup.p.parents:
    if par is None:  # 遍历到文档本体时 
        print(par)
    else:
        print(par.name)

6.bs4标签树的平行遍历

属性作用
next_sibling返回按照HTML文本顺序的下一个平行标签
previous_sibling返回按照HTML文本顺序的上一个平行标签
next_siblings返回按照HTML文本顺序的后续所有平行标签的迭代类型
previous_siblings返回按照HTML文本顺序的前续所有平行标签的迭代类型

调用方法和上面两种差不多, 也比较好理解,这里就不多说了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值