爬虫工具-BeautifulSoup
创始人
2024-01-28 16:03:45
0
 

BeautifulSoup:

        1. 是一个高效的网页解析库,可以从HTML或者XML文件中提取数据

        2. 支持不同的解析器,可以对HTML、XML等进行解析

        3. 是一个敏感又方便的网页解析库,处理高效,支持多种解析器

        4. 利用它在不编写正则表达式的情况下也能方便的实现网页信息的抓取

一、标签选择器:

   假设网页返回的HTML文件如下:

h = """
The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were,Lacie andTillie;and they lived at the bottom of a well.

...

"""

1  .string  --获取文本内容

# 1.导包
from bs4 import BeautifulSoup
# 2.实例化对象
soup = BeautifulSoup(h, 'lxml')     # 参数1:要解析的内容    参数2:解析器# 通过标签选取,会返回包含标签本身及其里面的所有内容
print(soup.head)      # 包含head标签在内的所有内容
print(soup.p)         # 返回匹配的第一个结果# .string是属性,作用是获取字符串文本
print(soup.title.string)

运行结果:

2  .name --获取标签本身名称

from bs4 import BeautifulSoupsoup = BeautifulSoup(h, 'lxml')print(soup.title.name)    # 返回标签自身的名称
print(soup.p.name)        # 获取标签名

运行结果:

 3   .attrs[] --通过属性拿属性的值

from bs4 import BeautifulSoupsoup = BeautifulSoup(h, 'lxml')# 写法1
print(soup.p.attrs['name'])   # 获取p标签name属性的属性值
print(soup.a.attrs['href'])   # 获取p标签id属性的属性值# 写法2
print(soup.p['id'])
print(soup.p['class'])   # 以列表式保存
print(soup.a['href'])    # 也是返回第一个值

运行结果:

 二、标准选择器

   假设网页返回的HTML文件如下:

html='''

Hello

  • Foo
  • Bar
  • Jay
  • Foo-2
  • Bar-2
'''

1. 使用find_all()根据标签名查找

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')print(soup.find_all('ul'))  # 拿到所有ul标签及其内容print(soup.find_all('ul')[0])   # 返回的是列表,可以通过下标获取目标数据print(soup.find_all('div'))

2.  get_text() 获取内容

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')for ul in soup.find_all('ul'):print(ul)         # 返回的是标签+内容print(ul.get_text())     # 只返回内容

运行结果:

3.  使用find_all()根据属性查找

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')# 特殊属性查找
print(soup.find_all(class_='element'))     # class属于Python关键字,做特殊处理 _
print('---------------------------------')# 推荐的查找方法!    ---指定标签和属性
print(soup.find_all('li', {'class':'element'}))
print('---------------------------------')
print(soup.find_all('ul', {'id':'list-1'}))

运行结果:

4. text=() 根据文本值选择

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')# 语法格式:text='要查找的文本内容'
print(soup.find_all(text='Foo'))    # 可以做内容统计用
print(len(soup.find_all(text='Foo')))    # 统计数量

运行结果:

5. find( name , attrs , recursive , text , **kwargs ) 

# find返回单个元素,find_all返回所有元素
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')print(soup.find('ul'))      # 只返回匹配到的第一个
print(soup.find('page'))    # 如果标签不存在返回None

 运行结果:

三、CSS选择器

        通过select()直接传入CSS选择器即可完成选择

        如果对HTML里的CSS选择器很熟悉可以考虑用此方法

 假设网页返回的HTML文件如下:

html='''
q321312321

Hello

  • Foo
  • Bar
  • Jay
  • Foo
  • Bar
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')# 根据标签去找,标签不加任何修饰,多个条件用空格隔开
print(soup.select('ul li'))
print("---------------------------------------")# class类名前加'.'
print(soup.select('.panel-body'))
print("---------------------------------------")# 多个条件用空格隔开
print(soup.select('ul.list'))
print(soup.select('ul .element'))
print("---------------------------------------")# 注意:可以混合使用
# 例如:根据id和class去找
a = soup.select('#list-1 .element')    # .select方法会获取满足条件的所有内容
print(a)
for i in a:print(i.string)

获取属性的值:

    两种写法:

        1,ul['id'] 、

        2,ul.attrs['id']

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')s = soup.select('#list-2')
for ul in s:print(ul)# 写法1:print("-------------------------------------------------")print(ul['id'])print("-------------------------------------------------")print(ul['class'])print("-------------------------------------------------")# 写法2:print(ul.attrs['id'])print(ul.attrs['class'])

运行结果:

相关内容

热门资讯

话费小本创业的项目 话费小本创... 小本创业项目:快餐小吃店话费小本创业的项目随着社会压力的增大,很多人没有时间本人做饭,为了工作会选择...
2014小本创业不容错过的项目... 2014小本创业做什么比较好?其实对于大部分创业者来说,小本创业更能取得成功,今天就给大家介绍几个小...
2014小本创业不容错过 卤中... 如今,随着近年来熟食行业的快速发展,给广大的消费者带来了美味,也给投资者带来了绝好的契机,卤中仙熟食...
小本创业好项目摆地摊做什么好?... 小本创业一直以来都是比较受普通大众所喜爱的,而很多人白手起家最开始做的就是摆地摊,不要瞧不起这个小本...
重访抗战地标丨英雄之城·不能忘...   为什么要永远铭记抗战英雄?因为当“中华民族到了最危险的时候”,“用血肉筑起新的长城”并不是艺术升...
各地高校持续实施“宏志助航计划...   央视网消息:当前正值高校毕业生就业关键期,教育部要求各地高校加快实施年度“宏志助航计划”,为离校...
2018小本创业好2017十个... 1、农户住宅设计业我们知道盖房是农民生活中的头等大事,随着社会经济的发展,农户住宅也向实用、美观、个...
环保创业好项目 环保行业有哪些... 酿酒蒸馏/餐饮食堂,全国90%传统锅炉需要改造。千亿市场商机等你来分享。具有竞争性独特产品,市场唯一...
2015年有哪些小本创业好项目... 对于普通大众来说,由于资金的限制,进行小本创业是最恰当的选择.都有什么项目适宜小本创业经营呢?  第...
创业小本好项目 创业小本好项目... 生活水平越来越高,这对于刚毕业的年轻人来说或许就产生了不小的压力,进入职场的时间不长,工资也没有太高...