当前位置: 首页 > news >正文

爬虫 beautifulSoup 方法

有的是tag.方法,有的是soup.方法。tag指的是一个标签,soup就是soup。

一、节点查找方法

用于从树形结构中定位目标标签或内容。

方法功能描述示例
soup.find(name, attrs, text, ...)查找第一个匹配的节点(标签 / 文本)# 找第一个 <p> 标签p_tag = soup.find('p')# 找 class="title" 的 <h1>title = soup.find('h1', class_='title')
soup.find_all(name, attrs, limit, ...)查找所有匹配的节点,返回列表# 找所有 <a> 标签all_links = soup.find_all('a')# 找所有 href 含 "example" 的 <a>links = soup.find_all('a', href=lambda x: 'example' in x)
soup.select(css_selector)CSS 选择器查找节点(更灵活)# 找 class="content" 的 <div>div = soup.select('.content')[0]# 找 id="main" 下的所有 <p>paras = soup.select('#main p')

二、节点遍历方法

用于在树形结构中遍历父子、兄弟节点。

方法 / 属性功能描述示例
tag.contents获取节点的直接子节点列表(包含文本节点)# 打印 <div> 的所有直接子节点for child in div.contents:print(child)
tag.children迭代器形式的直接子节点# 遍历 <ul> 的直接子节点(<li>)for li in ul_tag.children:print(li.text)
tag.descendants迭代器形式的所有后代节点(递归遍历)# 遍历 <body> 的所有后代节点for node in body.descendants:if node.name == 'a':print(node['href'])
tag.parent获取节点的父节点# 获取 <a> 的父节点parent = a_tag.parent
tag.next_sibling/tag.previous_sibling获取下一个 / 上一个兄弟节点(同级节点)# 找 <p> 的下一个兄弟节点next_p = p_tag.next_sibling

三、节点内容提取方法

用于从节点中提取文本、属性等信息。

方法 / 属性功能描述示例
tag.text / tag.get_text()提取节点的所有文本内容(含后代节点文本)# 提取 <div> 内的所有文本text = div_tag.text# 提取时去除多余空格clean_text = div_tag.get_text(strip=True)
tag['attr_name']提取节点的属性值(如 href/src# 提取 <a> 的链接link = a_tag['href']# 提取 <img> 的图片地址img_url = img_tag['src']
tag.get(attr_name, default)提取属性(不存在时返回默认值)# 提取 class,不存在则返回 "default"cls = div_tag.get('class', 'default')

四、节点修改与操作方法

用于修改节点的标签、属性、文本等。

方法功能描述示例
tag.append(new_tag)向节点末尾添加子节点# 向 <div> 末尾添加 <p> 标签new_p = soup.new_tag('p', text='新增内容')div_tag.append(new_p)
tag.insert(index, new_tag)在指定位置插入子节点# 在 <ul> 的第 2 个位置插入 <li>new_li = soup.new_tag('li', text='新列表项')ul_tag.insert(1, new_li)
tag.replace_with(new_tag)用新节点替换原节点# 用 <strong> 替换 <em>new_strong = soup.new_tag('strong', text='重要')em_tag.replace_with(new_strong)
del tag['attr']删除节点的属性# 删除 <a> 的 href 属性del a_tag['href']
tag.string = new_text修改节点的文本内容# 修改 <p> 的文本p_tag.string = '修改后的文本'

五、其他实用方法

方法功能描述示例
soup.prettify()格式化 HTML 代码(便于查看)print(soup.prettify())
tag.name获取节点的标签名(如 'div'/'a'print(p_tag.name) # 输出 'p'
tag.has_attr(attr)判断节点是否包含某属性if a_tag.has_attr('href'):print("包含 href 属性")

这些方法覆盖了从 “查找节点” 到 “修改结构” 的全流程,结合实际需求灵活组合即可高效处理 HTML 解析任务。

http://www.dtcms.com/a/512174.html

相关文章:

  • 深入BERT内核:用数学解密掩码语言模型的工作原理
  • 在webos中,在桌面上添加应用
  • 【Spring Security】授权(一)
  • 数据结构八大排序:快速排序-挖坑法(递归与非递归)及其优化
  • Docker 中卷、容器、镜像的区别
  • 学习React-21-受控组件非受控组件
  • 银行测试学习计划
  • 电商自建站中企动力网站建设公司
  • 怎么搜 织梦的网站唐山海港经济开发区人才网
  • Qt打包工具Enigma Virtual Box
  • 【同步/异步 日志系统】--- 介绍
  • 【软考备考】 数据与文件的加解密种类详解和使用场景
  • GitLab 版本控制与管理指南
  • Python动态方法调用全解:从字符串到执行的艺术
  • Blender入门学习03
  • 网站建设龙兵科技嘉兴网站建设网站建设
  • html代码下载网站怎么优化关键词
  • Kafka面试精讲 Day 27:监控告警与故障排查
  • C++ ABI:编译报错之:gcc 4.8.1 切 gcc 6.1.0
  • OLED-on-silicon(OLEDoS)技术正成为VR/MR设备显示技术的未来大趋势
  • QML学习笔记(四十四)QML与C++交互:对QML对象设置objectName
  • 网站制作全包多少钱演出票务网站建设
  • 用 Go 手搓一个 NTP 服务:从“时间混乱“到“精准同步“的奇幻之旅
  • 如何设计一个高并发系统?
  • 仓颉语言核心技术全解析与实战教程
  • 【多维聚类算法】RQ-Kmeans 利用残差信息 捕捉细节特征
  • 【代码随想录算法训练营——Day44】动态规划——1143.最长公共子序列、1035.不相交的线、53.最大子序和、392.判断子序列
  • 北住房和城乡建设厅网站亦庄建设局网站
  • 做生鲜食品最好的网站深圳网站建设犀牛云
  • Spring—容器