前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >BeautifulSoup4

BeautifulSoup4

作者头像
TomatoCool
发布于 2023-07-30 09:39:39
发布于 2023-07-30 09:39:39
31600
代码可运行
举报
文章被收录于专栏:TomatoCoolTomatoCool
运行总次数:0
代码可运行

参考链接:https://github.com/DeronW/beautifulsoup/blob/v4.4.0/docs/index.rst

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install beautifulsoup4

创建一个bs实例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#  直接打开文件
soup = BeautifulSoup(open("index.html"))
#  使用字符串创建
soup = BeautifulSoup("<html>xxx</html>")

解析器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#  Python标准库
BeautifulSoup(markup, "html.parser")

#  lxml
#  html解析器
BeautifulSoup(markup, "lxml")
#  xml解析器
BeautifulSoup(markup, ["lxml-xml"])
BeautifulSoup(markup, "xml")

#  htmll5lib
BeautifulSoup(markup, "html5lib")

Tag对象属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#  获取子tag,变量名与html或xml标签相同,只获取第一个
#  例如h2,p
Tag.tag_name

#  的标签名
Tag.name

#  html属性
#  例如id,class
tag['id']
#  获取所有属性,返回一个字典
tag.attrs

#  获取tag中的字符串(当tag中只有一个字符串时生效,否则返回None)
#  如果tag只有一个子节点,也会输出这个子节点(字符串相当于一个子节点)
tag.string

#  遍历获取字符串,返回一个列表
tag.strings

#  遍历获取字符串,删除空格与换行
tag.stripped_strings

#  获取所有子节点,返回一个列表
tag.contents

#  子节点生成器,可对子节点进行循环
tag.children

#  遍历获取所有子孙节点,返回一个列表
tag.descendants

#  获取父节点
tag.parent

#  递归获取父节点,返回一个列表
tag.parents

#  获取兄弟节点
tag.previous_sibling
tag.next_sibling

#  对兄弟节点进行迭代输出
tag.next_siblings
tag.previous_siblings

#  获取上一个/下一个被解析的对象
tag.previous_element
tag.next_element

#  迭代获取上一个/下一个被解析的对象
tag.previous_elements
tag.next_elements

Tag对象方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#  搜索子节点,返回第一个结果
#  标签名,例如p,h2
#  也可以是正则
#  也可以是列表
#  也可以是属性
#  string参数,搜索包含string的tag
#  设置数量
tag.find('p')
tag.find(re.compile("t"))
tag.find(['a','p'])
tag.find('a', class_='aa')
tag.find(string='aaa')
tag.find('a', limit=5)

#  搜索子节点,返回一个列表
tag.find_all()
#  搜索父节点
tag.find_parent()
tag.find_parents()
#  搜索兄弟节点
tag.find_next_sibling()
tag.find_next_siblings()
tag.find_previous_sibling()
tag.find_previous_siblings()
#  向前搜索
tag.find_previous()
tag.find_all_previous()
#  向后搜索
tag.find_next()
tag.find_all_next()
#  css选择器,和css语法一样
tag.select('a[href$="tillie"]')

#  添加子节点
tag.append("<p>aaa</p>")
#  插入子节点
tag.insert(0, '<p>aaa</p>')
#  在当前节点前添加
tag.insert_before()
#  在当前节点后添加
tag.insert_after()
#  清除节点
tag.clear()
#  移除当前节点,并返回
tag.extract()
#  移除当前节点,并销毁
tag.decompose()
#  替换节点
tag.replace_with()
#  对节点进行封装
tag.wrap(tag.new_tag("b"))
#  移除节点标签
tag.unwrap()
#  获取文本
tag.get_text()
#  格式化输出
print(tag.prettify())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023 年 05 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档