• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

BeautifulSoup基本使用

BeautifulSoup基本使用

​ BeautifulSoup 简称 bs4,和 lxml 一样,是个 html 的解析器,主要功能也是解析和提取数据

​ 缺点:效率没有 lxml 高;优点:接口设计人性化,使用方便

​ 安装:pip install bs4,安装完成即可通过 from bs4 import BeautifulSoup导入依赖开始使用:

from bs4 import BeautifulSoup

# 加载 html 文件(如果要加载服务器响应内容,则把第一个参数换成服务器响应内容即可)
html = BeautifulSoup(open('./html/test.html', encoding='utf-8'), 'lxml')
# 获取第一个 a 标签
a_first = html.a
# 获取 a_first 属性及属性值
attrs = a_first.attrs

'''
获取第一个符合条件的数据
'''
a = html.find('a')
# 获取 title 为 a2 的 a 标签并输出
print(html.find('a', title='a2'))
# 获取 class 为 c1 的 a 标签并输出(class 是关键字,所以要加下划线作区分)
print(html.find('a', class_='c1'))

'''
获取所有符合条件的数据
'''
print(html.find_all('a'))
# 获取所有 a 标签和 span 标签并输出
print(html.find_all(['a', 'span']))
# 获取所有 li 标签取前两个并输出
print(html.find_all(['li'], limit=2))

# 获取所有 a 标签并输出
print(html.select('a'))
# 获取所有的 a 标签和 li 标签并输出
print(html.select('a,li'))
# 获取 class 为 c1 的标签并输出(.表示类选择器)
print(html.select('.c1'))
# 获取 id 为 l1的标签并输出(#表示 id 选择器,id 不能只有一个数字否则会报错)
print(html.select('#l1'))
# 获取有 id 属性的 li 标签并输出
print(html.select('li[id]'))
# 获取 id 为 l2 的 li 标签并输出
print(html.select('li[id=l2]'))
# 获取 div 标签下的 li 标签并输出
print(html.select('div li'))
# 获取 div 标签的第一级子标签 ul 并输出(> 获取的是儿子标签,不能获取到 孙子及以下标签)
print(html.select('div > ul'))

'''
获取 id 为 d1 的标签的文本内容并输出
注意: 如果标签中只有内容那么两种方式都可以获取到,如果标签中既有子标签还有内容那么只有 get_text()可以获取到文本内容
推荐使用 get_text()获取文本内容
'''
print(html.select('#d1')[0].string)
print(html.select('#d1')[0].get_text())
# 获取 id 为 d1 的标签的名称并输出
print(html.select('#d1')[0].name)

​

​

记得快乐
posted @ 2023-01-08 15:46  Y-wee  阅读(89)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3