文章目录
(一)bs4基本简介
1. 功能
beautifulsoup简称bs4,和lxml一样是一个html的解析器,主要功能也是解析和获取数据。
2. 优缺点
缺点:效率总体来说没有lxml高
优点:接口设计人性化,使用方便
(二)安装以及创建
1. 安装.
2. 导入
from bs4 import beautifulsoup
3. 创建对象
- 服务器响应的文件生成对象
soup = BeautifulSoup(response.read().decode('utf-8'),'lxml')
- 本地文件生成对象
soup = BeautifulSoup(open('beautiful.html',encoding='utf-8'),'lxml')
注:打开文件格式默认为gbk,因此我们需要指定编码为utf-8
(三)节点定位
根据标签名查找结点
以下实例由此HTML源码为基础:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <ul> <li id="l1">北京</li> <li id = 'l2'>上海</li> <li class="cl3">重庆</li> <li class="cl4">天津</li> <p>welcome</p> <a href="" id = 'i1' class="a1">python爬虫</a> </ul> </div> <div id="i2"> <p id = "p1">hello world</p> <a href="https://baidu.com" id = 'i3' title="t2">baidu</a> </div> </body> </html>
- 查找第一个符合条件的值:
print(soup.a)
- 查找标签的属性和属性值并以列表的形式展现
print(soup.a.attrs)
(五)获取节点信息
获取节点内容实例:
html代码
obj = soup.select('#i2')[0] print(obj.string) print(obj.get_text())
obj = soup.select('.cl3')[0] # 获取标签的名字 print(obj.name) # 获取属性值并以字典的形式显示 print(obj.attrs)
obj = soup.select('.cl3')[0] print(obj.attrs.get('class')) print(obj.get('class')) print(obj['class'])