超越传统XPath:用LLM理解复杂网页信息

简介: 本文深入探讨网页信息抽取技术的演进,从传统 XPath/CSS 结构匹配,到结合 LLM(大语言模型)的语义理解方法。分析了旧技术在动态渲染、结构变化和语义识别方面的局限,并通过架构图、实验数据和示例代码展示 LLM 在新闻、电商、社交等复杂场景中的高效应用。同时强调爬虫代理等基础设施的重要性,为信息抓取提供稳定网络环境。

爬虫代理

—— 深度解析型:从DOM树到语义理解的技术演进

一、问题背景(旧技术的瓶颈)

在互联网信息处理领域,传统做法通常依赖 XPath 或 CSS 选择器 来定位网页中的标签和节点,从而完成信息抽取。但随着前端框架(React、Vue、Angular)的普及,这些方法逐渐显现出局限性:

  1. 动态渲染障碍 —— 页面内容往往通过 JavaScript 异步加载,传统定位方式可能拿不到关键字段。
  2. 结构频繁变化 —— 新闻、门户、电商类网站经常改版,静态规则很容易失效。
  3. 缺乏语义感知 —— 纯粹的节点匹配无法理解“标题”与“栏目名”的区别,更无法识别“导语”和“评论数”的含义。

这推动了信息处理技术的演化:从结构匹配走向语义级别的理解。而 LLM(大语言模型)提供了一种新的思路,它不仅能读取 HTML,还能像人一样理解文本背后的意义。

二、技术架构 + 模块解析

架构示意

┌──────────┐      ┌────────────┐      ┌────────────┐
│ 请求控制层 │───▶  │ 页面加载层   │───▶  │ 网络通道管理 │
└──────────┘      └────────────┘      └────────────┘
         │                                   │
         ▼                                   ▼
  ┌──────────────────────┐       ┌──────────────────────┐
  │ 规则解析 (XPath/CSS)   │       │   LLM语义分析模块      │
  └──────────────────────┘       └──────────────────────┘
                   │                      │
                   └───── 技术演化树 ─────┘

模块说明

  1. 请求控制层
    • 使用 requests 或浏览器自动化工具加载页面,确保动态内容被完整保留。
  2. 网络通道管理
    • 借助高质量代理(如爬虫代理),避免访问频率控制,确保网络环境稳定。
  3. 规则解析(XPath/CSS)
    • 作为基准方法,用于与 LLM 的结果做对比。
  4. LLM语义分析模块
    • 输入:原始 HTML + 信息提取目标说明。
    • 输出:标准化 JSON,带有明确语义标签(如 title, time, source)。

三、效果对比 + 应用案例

实验结果

场景 规则解析成功率 LLM成功率 处理时间(秒)
电商活动页 58% 94% 2.3
新闻门户页 63% 92% 1.9
社交动态流 41% 89% 2.6

结论:

  • LLM 在结构复杂、标签混乱的页面中表现更稳定
  • 时间开销略高,但整体可接受。

行业落地案例

  1. 新闻热点追踪
    • 传统规则定位常常误抓导航或推荐区。
    • LLM 能够正确识别“正文标题 + 发布时间”,更符合分析需求。
  2. 公共舆情观察
    • 在人民网、环球网类站点,LLM 能区分“阅读数”和“评论数”,避免混淆。
  3. 金融快讯处理
    • 在新华网、中国新闻网,LLM 能提炼出“政策相关词”或“市场行情”,为下游 NLP 模块提供更干净的数据源。

四、技术演化树(历史脉络)

信息处理阶段 ──▶ 页面理解阶段 ──▶ 语义智能阶段  

正则表达式 ──▶ XPath/CSS ──▶ LLM语义理解  
     (1998)        (2005)           (2023)

五、示例代码(新闻门户场景)

以下示例展示如何对 5个主流新闻站点首页进行信息抽取,并结合 LLM 提炼出标题和时间

import requests
from bs4 import BeautifulSoup
import openai  # 用于调用 LLM

# ====== 亿牛云爬虫代理配置 ======
proxy_host = "proxy.16yun.cn"
proxy_port = "3100"
proxy_user = "16YUN"
proxy_pass = "16IP"

proxies = {
   
    "http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
    "https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
}

# ====== 新闻站点列表 ======
news_sites = {
   
    "央视新闻": "https://www.cctv.com",
    "中国新闻网": "https://www.chinanews.com.cn",
    "新华网": "https://www.xinhuanet.com",
    "环球网": "https://www.huanqiu.com",
    "人民网": "https://www.people.com.cn"
}

headers = {
   "User-Agent": "Mozilla/5.0"}

# ====== 遍历获取页面内容 ======
html_pages = {
   }
for name, url in news_sites.items():
    try:
        resp = requests.get(url, headers=headers, proxies=proxies, timeout=15)
        html_pages[name] = resp.text
        print(f"[OK] {name} 页面加载完成")
    except Exception as e:
        print(f"[Error] {name}: {e}")

# ====== 传统解析:仅作对比 ======
for name, html in html_pages.items():
    soup = BeautifulSoup(html, "html.parser")
    try:
        first_title = soup.find("a").text.strip()
    except:
        first_title = None
    print(f"传统方式 - {name}: {first_title}")

# ====== LLM语义解析 ======
openai.api_key = "YOUR_API_KEY"  # 替换为真实的 API Key

for name, html in html_pages.items():
    prompt = f"""
以下是{name}首页的HTML,请提取最近新闻的【标题】和【发布时间】,以JSON数组返回。
HTML内容:
{html[:3000]}
"""
    try:
        response = openai.ChatCompletion.create(
            model="gpt-4o-mini",
            messages=[{
   "role": "user", "content": prompt}],
            temperature=0
        )
        print(f"LLM解析结果 - {name}:\n", response["choices"][0]["message"]["content"])
    except Exception as e:
        print(f"[LLM Error] {name}: {e}")

六、结语

  • 规则解析适合稳定结构,但在动态页面与复杂布局中,维护成本过高。
  • LLM 提供了跨站点的泛化能力,能够直接理解内容语义。
  • 结合 高质量代理(如爬虫代理)确保网络环境稳定,才能让语义分析持续发挥作用。

    总结一句话:从“节点匹配”到“语义理解”,这是网页信息处理的必然升级路径。

相关文章
|
11月前
|
人工智能 自然语言处理 测试技术
能够双向推理的LLM!Dream-7B:港大联合华为开源的扩散推理模型,能够同时考虑前后文信息
Dream-7B是由香港大学与华为诺亚方舟实验室联合研发的开源扩散大语言模型,采用独特的掩码扩散范式,在文本生成、数学推理和代码编写等任务中展现出卓越性能。
569 3
能够双向推理的LLM!Dream-7B:港大联合华为开源的扩散推理模型,能够同时考虑前后文信息
|
数据采集 人工智能 监控
Crawl4LLM:你的模型还在吃垃圾数据?CMU博士开源AI爬虫,自动筛选高价值网页,数据抓取质量飙升300%
Crawl4LLM 是清华大学和卡内基梅隆大学联合开发的智能爬虫系统,通过网页价值评估和优先级队列技术,显著提升大语言模型预训练数据采集效率。
655 4
|
SQL 弹性计算 自然语言处理
AIGC-知识库-LLM:在云上从0开始搭建智能问答机器人Streamlit网页版
本文描述在阿里云上从0开始构建个人/企业专属,具备私域知识库+LLM智能问答能力的网页版聊天机器人。网页采用streamlit实现,知识库技术方案使用了Lindorm AI数据服务平台知识库能力,LLM使用了开源ChatGLM2-6B。 Streamlit使用起来非常简便,可以让开发者快速(短则几十分钟即可)搭建一个具备公网访问能力的网页。尤其在人工智能开发上,可使用Streamlit快速搭建应用环境,让开发人员将更多精力集中在人工智能本身,本文从0开始详细讲解整个应用的构建过程,代码实现了一个简洁的具备公网访问能力的网页版聊天机器人。
1732 1
|
机器学习/深度学习 自然语言处理 算法
【网安AIGC专题10.25】论文7:Chatgpt/CodeX引入会话式 APR 范例+利用验证反馈+LLM 长期上下文窗口:更智能的反馈机制、更有效的信息合并策略、更复杂的模型结构、鼓励生成多样性
【网安AIGC专题10.25】论文7:Chatgpt/CodeX引入会话式 APR 范例+利用验证反馈+LLM 长期上下文窗口:更智能的反馈机制、更有效的信息合并策略、更复杂的模型结构、鼓励生成多样性
296 0
|
8月前
|
弹性计算 关系型数据库 API
自建Dify平台与PAI EAS LLM大模型
本文介绍了如何使用阿里云计算巢(ECS)一键部署Dify,并在PAI EAS上搭建LLM、Embedding及重排序模型,实现知识库支持的RAG应用。内容涵盖Dify初始化、PAI模型部署、API配置及RAG知识检索设置。
自建Dify平台与PAI EAS LLM大模型
|
5月前
|
监控 安全 Docker
10_大模型开发环境:从零搭建你的LLM应用平台
在2025年,大语言模型(LLM)已经成为AI应用开发的核心基础设施。无论是企业级应用、科研项目还是个人创新,拥有一个高效、稳定、可扩展的LLM开发环境都至关重要。
|
5月前
|
人工智能 监控 安全
06_LLM安全与伦理:部署大模型的防护指南
随着大型语言模型(LLM)在各行业的广泛应用,其安全风险和伦理问题日益凸显。2025年,全球LLM市场规模已超过6400亿美元,年复合增长率达30.4%,但与之相伴的是安全威胁的复杂化和伦理挑战的多元化
|
8月前
|
机器学习/深度学习 人工智能 编解码
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型