You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Racket中从已获取的HTML源码提取页面title标签内容

Racket 提取HTML title标签内容的实现方案

你当前使用的neil/html-parsing库会将HTML文本解析为S表达式格式的XEXPR结构化数据,按以下步骤即可提取标题:

  • 调用库提供的html->xexp方法,把存储HTML源码的my-html字符串转为结构化XEXPR
  • 递归遍历XEXPR树,匹配标签名为title的节点,提取内部文本拼接即可

完整可运行的补充代码如下,直接加到你现有代码末尾即可:

;; 解析HTML字符串为结构化XEXPR
(define parsed-doc (html->xexp my-html))

;; 递归查找title节点的工具函数
(define (extract-title node)
  (cond
    [(not (list? node)) ""]
    ;; XEXPR节点第一个元素是标签名,html-parsing统一转小写符号
    [(eq? (car node) 'title)
     ;; 跳过标签名、属性表,过滤出子节点里的字符串拼接
     (apply string-append (filter string? (cddr node)))]
    [else
     ;; 遍历所有子节点,返回第一个匹配到的title内容
     (for/or ([child (cdr node)])
       (define res (extract-title child))
       (if (> (string-length res) 0) res #f))]))

;; 获取页面标题
(define page-title (extract-title parsed-doc))

运行后page-title变量存储的就是目标页面的标题文本,对应你抓取的Rosetta Code页面,提取结果为"Web scraping - Rosetta Code"。

说明:XEXPR的标准结构为(标签名 属性键值对列表 子节点1 子节点2 ...),命中title标签后取第三个元素及之后的内容,过滤掉非字符串的子节点(常规页面title均为纯文本,无嵌套标签)拼接即可,不需要额外引入第三方依赖。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:24:14