0

0

如何高效抓取网页中所有手风琴式折叠区的文本内容(以牙科费用表为例)

碧海醫心

碧海醫心

发布时间:2026-02-25 22:56:01

|

402人浏览过

|

来源于php中文网

原创

如何高效抓取网页中所有手风琴式折叠区的文本内容(以牙科费用表为例)

本文介绍一种更高效、轻量的网页数据抓取方案:当目标数据已存在于初始html中时,优先使用 requests + lxml 替代 selenium,避免冗余的浏览器自动化操作,显著提升稳定性与执行速度。

本文介绍一种更高效、轻量的网页数据抓取方案:当目标数据已存在于初始html中时,优先使用 requests + lxml 替代 selenium,避免冗余的浏览器自动化操作,显著提升稳定性与执行速度。

在实际网页爬虫开发中,一个常见误区是“见到交互式页面就默认用 Selenium”。但正如本例所揭示的——访问 https://www.php.cn/link/e1a2719218ad9000036929229c99cd3a 时,尽管页面使用了手风琴(Accordion)组件折叠展示价格,所有治疗项目与费用均已在首次 HTTP 响应的 HTML 源码中静态存在,无需触发 JavaScript 展开动作。此时强行使用 Selenium 不仅增加复杂度(需处理 Cookie 弹窗、元素点击、隐式等待等),还易因 DOM 加载时机或元素定位偏差导致失败。

推荐方案:requests + lxml(静态解析)
该组合轻量、快速、稳定,适用于绝大多数服务端渲染(SSR)页面。以下是完整可运行代码:

import requests
from lxml import html

# 1. 发起 HTTP 请求获取原始 HTML
url = "https://www.php.cn/link/e1a2719218ad9000036929229c99cd3a"
response = requests.get(url, timeout=10)
response.raise_for_status()  # 确保请求成功

# 2. 解析 HTML 文档
tree = html.fromstring(response.text)

# 3. 定位价格表格行(<tr>),逐行提取第一列(项目名)和第二列(价格)
dental_fees = []
for row in tree.xpath('//div[contains(@class, "pricing")]//tr'):
    try:
        # 使用 .xpath('./td[1]/text()') 精确匹配当前行下的单元格文本
        product = row.xpath('./td[1]/text()')[0].strip()
        price = row.xpath('./td[2]/text()')[0].strip()
        dental_fees.append({"Title": product, "Price": price})
        print(f"✓ {product} → {price}")
    except (IndexError, AttributeError):
        # 跳过表头、空行或格式异常的行
        continue

print(f"\n✅ 共提取 {len(dental_fees)} 条有效价格数据。")

? 关键说明与注意事项:

  • 为什么不用 Selenium?
    原代码中尝试点击 .material-icons 展开所有 Accordion,但该选择器实际匹配多个非折叠控件(如返回箭头),且 driver.find_element(By.CLASS_NAME,'accordion-content') 会返回首个匹配元素而非每个区块的内容,导致数据重复或遗漏。Selenium 在此场景下属于“高射炮打蚊子”。

  • XPath 定位逻辑解析:
    //div[contains(@class, "pricing")]//tr 精准锁定价格区域内的所有表格行;./td[1] 和 ./td[2] 使用相对路径(./)确保从当前

    WPS AI
    WPS AI

    金山办公发布的AI办公应用,提供智能文档写作、阅读理解和问答、智能人机交互的能力。

    下载
    节点出发,避免跨行误读。
  • 健壮性增强建议:

    • 添加 timeout 和 raise_for_status() 防止网络异常静默失败;
    • 使用 try/except 捕获 IndexError(如空 )和 AttributeError(如节点无文本);
    • 对 strip() 结果做空值校验(如 if product and price:)可进一步过滤脏数据。
    • 依赖安装(一次执行):

      pip install requests lxml
    • ? 总结:
      判断是否使用 Selenium 的黄金标准是——目标数据是否依赖客户端 JavaScript 动态生成? 若答案为否(如本例),请坚定选择 requests + lxml(或 BeautifulSoup)。它更快、更稳、更易调试,也更符合工程化爬虫的最佳实践。真正的自动化,始于对网页渲染机制的准确理解。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

830

2023.08.22

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6483

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

365

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

438

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

707

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

22

2025.12.06

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

127

2026.02.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号