首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >超越传统XPath:用LLM理解复杂网页信息

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

原创
作者头像
jackcode
发布2025-09-11 11:24:10
发布2025-09-11 11:24:10
10400
代码可运行
举报
文章被收录于专栏:爬虫资料爬虫资料
运行总次数:0
代码可运行
爬虫代理
爬虫代理

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

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

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

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

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

二、技术架构 + 模块解析

架构示意

代码语言:plain
复制
┌──────────┐      ┌────────────┐      ┌────────────┐
│ 请求控制层 │───▶  │ 页面加载层   │───▶  │ 网络通道管理 │
└──────────┘      └────────────┘      └────────────┘
         │                                   │
         ▼                                   ▼
  ┌──────────────────────┐       ┌──────────────────────┐
  │ 规则解析 (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 模块提供更干净的数据源。

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

代码语言:plain
复制
信息处理阶段 ──▶ 页面理解阶段 ──▶ 语义智能阶段  

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

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

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

代码语言:python
代码运行次数:0
运行
复制
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 提供了跨站点的泛化能力,能够直接理解内容语义。
  • 结合 高质量代理(如爬虫代理)确保网络环境稳定,才能让语义分析持续发挥作用。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题背景(旧技术的瓶颈)
  • 二、技术架构 + 模块解析
    • 架构示意
    • 模块说明
  • 三、效果对比 + 应用案例
    • 实验结果
    • 行业落地案例
  • 四、技术演化树(历史脉络)
  • 五、示例代码(新闻门户场景)
  • 六、结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档