3.30数据解析-bs4库的基本介绍
1)lxml只会局部遍历,BeautifulSoup是基于HTML DOM,会载入并解析整个文档
2)BeautifulSoup可以选择python标准HTML解析器、lxml解析器、re解析器、CSS选择器
3)解析速度:re>lxml>BeautifulSoup
使用难度:BeautifulSoup>lxml>re
从使用方式上看BeautifulSoup、lxml、re的区别在于:
lxml、re都有自己的语法和表达式,需要自己写提取规则,而BeautifulSoup可以直接用API直接提取目标
3.31bs4库的基本使用
from bs4 import BeautifulSoup
html='''...'''
soup=BeautifulSoup(html,'lxml')
注意:
1)BeautifulSoup只能对html字符串进行解析,无法直接解析本地的html文档
2)BeautifulSoup底层使用解析器解析html文档生成DOM树,只会查找直接基于DOM树;默认使用html.parser、lxml速度更快、html5lib容错性最强;一般建议使用lxml,异常时使用html5lib
3.32bs4库提取数据
使用find_all、find方法提取元素
soup=BeautifulSoup(html,'lxml')
#获取所有指定标签元素
trs=soup.find_all('tr')
#获取第X个指定标签元素
trs=soup.find_all('tr',limit=2)[1]
#获取指定属性值的指定标签,两种方式
trs=soup.find_all('tr',class_='even')
trs=soup.find_all('tr',attrs={
'class':"event"})
#获取多个指定属性值的指定标签,两种方式
trs=soup.find_all('tr',class_='even',id='test')
trs=soup.find_all('tr',attrs{
'class':"event",'id':"test"})
#获取标签属性值,两种方式
aList=soup.find_all(