BeautifulSoup模块


BeautifulSoup库以来解析数据及提取数据,读懂html文件并且从中提取需要的数据

bs对象 = BeautifulSoup(要解析的文本[must be string],'解析器'[例如html.parser,python内置])
# 解析数据:
from bs4 import BeautifulSoup
...
html = res.text # html返回string类的值
soup = BeautifulSoup(html,'html.parser')
# soup的数据类型是<class 'bs4.BeautifulSoup'>,说明soup是一个BeautifulSoup对象
# 尽管显示出soup与html的形式一样,但是其内核不相同,html为string类,而soup是BeautifulSoup对象,如果直接打印会以str方式显示,  
# 但是他作为BeautifulSoup对象,之后可以使用BeautifulSoup对象内部的属性和方法来进行对内容的调用,至此解析数据完成。

# 提取数据:
find()与find_all()# find()与find_all()是BeautifulSoup对象的两个方法,它们可以匹配html的标签和属性,把BeautifulSoup对象里符合要求的数据都提取出来。  
# 它俩的用法基本是一样的,区别在于,find()只提取首个满足要求的数据,而find_all()提取出的是所有满足要求的数据
soup = find('div',class_= 'books')
# 这里有一个下划线,是为了和python语法中的类 class区分,避免程序冲突
# soup的类型是bs4.element.Tag !!!Tag对象!!!
soup = find_all('div',class_= 'books')
# soup的类型是bs4.element.ResultSet,表示为一个列表
# 括号中的参数:标签和属性可以任选其一,也可以两个一起使用,这取决于我们要在网页中提取的内容
# 使用find_all找到数据集后可以使用for loop来读取单个标签下的数据,但是其中的数据都在tag中,于是使用Tag对象

Tag对象三种常用的属性及方法:
1. Tag.find / Tag.find_all: 提取Tag中的Tag
2. Tag.text: 提取Tag中的文字
3. Tag['属性名']: 输入参数:属性名,可以提取这个属性的值



items = soup.find_all(class_='books')   # 通过匹配属性class='books'提取出我们想要的元素
for item in items:                      # 遍历列表items
    kind = item.find('h2')               # 在列表中的每个元素里,匹配标签<h2>提取出数据
    title = item.find(class_='title')     #  在列表中的每个元素里,匹配属性class_='title'提取出数据
    brief = item.find(class_='info')      # 在列表中的每个元素里,匹配属性class_='info'提取出数据
    print(kind.text,'\n',title.text,'\n',title['href'],'\n',brief.text) # 打印书籍的类型、名字、链接和简介的文字
# 我们在用text获取纯文本时,获取的是该标签内的所有纯文本信息,不论是直接在这个标签内,还是在它的子标签内
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值