爬虫 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 解析任务。

相关推荐
喵手13 小时前
Python爬虫实战:HTTP缓存系统深度实战 — ETag、Last-Modified与requests-cache完全指南(附SQLite持久化存储)!
爬虫·python·爬虫实战·http缓存·etag·零基础python爬虫教学·requests-cache
喵手13 小时前
Python爬虫实战:容器化与定时调度实战 - Docker + Cron + 日志轮转 + 失败重试完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·容器化·零基础python爬虫教学·csv导出·定时调度
喵手16 小时前
Python爬虫实战:全站 Sitemap 自动发现 - 解析 sitemap.xml → 自动生成抓取队列的工业级实现!
爬虫·python·爬虫实战·零基础python爬虫教学·sitemap·解析sitemap.xml·自动生成抓取队列实现
iFeng的小屋16 小时前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
Love Song残响17 小时前
揭秘Libvio爬虫:动态接口与逆向实战
爬虫
喵手19 小时前
Python爬虫实战:构建招聘会数据采集系统 - requests+lxml 实战企业名单爬取与智能分析!
爬虫·python·爬虫实战·requests·lxml·零基础python爬虫教学·招聘会数据采集
iFeng的小屋19 小时前
【2026最新当当网爬虫分享】用Python爬取千本日本相关图书,自动分析价格分布!
开发语言·爬虫·python
数研小生20 小时前
关键词搜索京东列表API技术对接指南
大数据·数据库·爬虫
喵手20 小时前
Python爬虫实战:网页截图归档完全指南 - 构建生产级页面存证与历史回溯系统!
爬虫·python·爬虫实战·零基础python爬虫教学·网页截图归档·历史回溯·生产级方案
Blurpath住宅代理21 小时前
动态代理的五大优点:提升爬虫效率与安全性
网络·爬虫·动态ip·住宅ip·住宅代理