1、BeautifulSoup4库也是一个HTML/XML解析器,主要也是提取数据。lxml只会局部遍历,BeautifulSoup是基于HTML DOM的,会载入整个文档,建立一个树状结构,在解析HTML时比较简单。
from bs4 import BeautifulSoup html=" 一段代码" soup=BeautifulSoup(html,‘lxml‘) # 1、获取所有tr标签 trs=soup.find_all(‘tr‘) # 2、获取第2个tr标签 # limit表示前几个,先获取前两个,[1]表示第二个,就是前两个里面的第二个,在列表层面获取 trs=soup.find_all(‘tr‘,limit=2)[1] # 3、获取所有class等于even的tr标签 # 在python中class是关键字,所以在class后加一个_,作为区分 trs=soup.find_all(‘tr‘,class_=‘even‘) # 或者 trs=soup.find_all(‘tr‘,attrs={‘class‘:"even"}) # 4、获取所有id等于test,class也等于test的a标签 ali=soup.find_all(‘a‘,id=‘test‘,class_=‘test‘) # 5、获取所有a标签的href属性 alist=soup.find_all(‘a‘) for a in alist: href=a[‘href‘] # 或者 href=a.attrs[‘href‘] # 6、获取所有的职位信息(纯文本) trs=soup.find_all(‘tr‘)[1:] # 除去第0个tr标签 movies=[] for tr in trs: movie={} tds=tr.find_all(‘td‘) title=tds[0].string category=tds[1].string city=tds[2].string movie[‘title‘]=title movie[‘category‘]=category movie[‘city‘]=city movies.append(movie) # 或者 trs=soup.find_all(‘tr‘)[1:] # 除去第0个tr标签 movies=[] for tr in trs: movie = {} # 获得tr标签下所有的非空白文本,以列表的形式 infos=list(tr.stripped_strings) movie[‘title‘]=infos[0] movie[‘category‘] = infos[1] movie[‘city‘] = infos[2] movies.append(movie)
2、find与find_all的区别:
find只提取符合条件的第一个标签,find_all可以提取所有满足要求的标签
3、string:获取某个标签下面的非标签字符串,返回的是个字符串
strings:获取某个标签下的子孙非标签字符串,返回的是个生成器
stripped_strings:获得某个标签下的子孙非标签字符串,去掉空白字符,返回的是个生成器
get_text:获取某个标签下的子孙非标签字符串,不是以列表的形式返回。返回的是普通字符串
原文地址:https://www.cnblogs.com/zhaoxinhui/p/12416438.html
时间: 2024-10-12 08:41:57