码迷,mamicode.com
首页 > 编程语言 > 详细

python爬虫(十九)BeautifulSoup4库

时间:2020-03-04 23:37:55      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:pen   python   end   dom   get   的区别   取数据   爬虫   XML   

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:获取某个标签下的子孙非标签字符串,不是以列表的形式返回。返回的是普通字符串

python爬虫(十九)BeautifulSoup4库

标签:pen   python   end   dom   get   的区别   取数据   爬虫   XML   

原文地址:https://www.cnblogs.com/zhaoxinhui/p/12416438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!