讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

Laper
Laper

剧本策划到成片协作

AniShort
AniShort

AI短剧协同制作平台

立刻MV
立刻MV

低成本歌曲 MV、视频生成

如何使用 Selenium(Python)精准提取网页中特定链接

小婷同学_3193

小婷同学_3193

发布时间:2026-01-10 16:42:08

|

375人浏览过

|

来源于php中文网

原创

如何使用 Selenium(Python)精准提取网页中特定链接

本文介绍如何利用 selenium 4.8 在动态网页中定位并批量提取符合结构特征的 `` 标签 `href` 属性,生成可迭代的 url 列表,适用于多级嵌套、类名含空格或动态加载的场景。

在使用 Selenium 进行网页链接提取时,关键在于精准定位元素与可靠等待机制。针对您提供的 HTML 结构(

  • 包裹含 class="programme titles" 的

    ,其内嵌 ),直接使用 find_elements 配合 XPath 是高效方案。但需注意:类名中含空格(如 "programme titles")不能用 . 连接 CSS 选择器,必须改用 XPath 的 @class 属性匹配或 contains() 函数。

    以下为完整、健壮的实现代码:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.chrome.options import Options
    
    # 可选:无头模式(适合服务器环境)
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    
    driver = webdriver.Chrome(options=chrome_options)
    wait = WebDriverWait(driver, 25)  # 最长等待25秒
    
    try:
        driver.get("https://your-target-website.com")  # 替换为目标URL
    
        # ✅ 推荐XPath:精确匹配多级结构 + 处理含空格的class
        links = wait.until(
            EC.presence_of_all_elements_located(
                (By.XPATH, '//li//h4[@class="programme titles"]/a[@class="br-blocklink__link"]')
            )
        )
    
        # 提取所有 href 属性,自动过滤 None 值
        href_list = [elem.get_attribute("href") for elem in links if elem.get_attribute("href")]
    
        print(f"成功提取 {len(href_list)} 个链接:")
        for i, url in enumerate(href_list, 1):
            print(f"{i}. {url}")
    
        # 后续可遍历处理每个链接,例如:
        # for url in href_list:
        #     driver.get(url)
        #     # ... 解析详情页
    
    except Exception as e:
        print(f"执行出错:{e}")
    finally:
        driver.quit()

    ⚠️ 重要注意事项:

    DeepBI DHTML 页面生成器
    DeepBI DHTML 页面生成器

    生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur

    下载
    • 类名含空格 → 必须用 XPath:CSS 选择器 .programme.titles 表示同时具有两个类,而 "programme titles" 是单个类名(含空格),此时应使用 //h4[@class="programme titles"] 或更鲁棒的 //h4[contains(@class,"programme") and contains(@class,"titles")]。
    • 显式等待优于 time.sleep():presence_of_all_elements_located 确保所有匹配元素已渲染完成,避免因加载延迟导致漏抓。
    • 防御性编程:get_attribute("href") 可能返回 None(如链接未加载完成或被 JS 动态移除),建议增加 if elem.get_attribute("href") 过滤。
    • 反爬提示:部分网站会检测 Selenium 特征,如需绕过,可添加 options.add_argument("--disable-blink-features=AutomationControlled") 并隐藏 navigator.webdriver(需额外 JS 注入)。

    掌握此方法后,您不仅能稳定提取目标链接列表,还可轻松扩展至其他属性(如 text、data-*)或结合 BeautifulSoup 进行深度解析。核心逻辑始终是:结构化定位 → 显式等待 → 安全提取 → 异常防护。

    立即学习“Python免费学习笔记(深入)”;

  • 热门AI工具

    更多
    豆包大模型

    豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

    小橡皮AI

    一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

    讯飞智文

    一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

    墨刀AI
    墨刀AI Hot

    一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

    Laper
    Laper Hot

    Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

    Flowith
    Flowith Hot

    Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

    DeepSeek

    DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

    UP简历
    UP简历 Hot

    一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

    WorkBuddy

    一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

    相关专题

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

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

    693

    2023.11.13

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

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

    4516

    2024.01.03

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

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

    326

    2025.12.06

    js正则表达式
    js正则表达式

    php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

    4896

    2023.06.20

    js获取当前时间
    js获取当前时间

    JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

    1435

    2023.07.28

    js 字符串转数组
    js 字符串转数组

    js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

    1898

    2023.08.03

    js是什么意思
    js是什么意思

    JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

    10443

    2023.08.17

    js删除节点的方法
    js删除节点的方法

    js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

    1040

    2023.09.01

    Postman身份认证怎么配置
    Postman身份认证怎么配置

    本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

    60

    2026.11.06

    热门下载

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

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 1.6万人学习

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

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn