应优先提取meta[name="description"]的content属性,未命中则查meta[property="og:description"];需处理编码、清理干扰节点、禁用http重定向、按语义截句而非字节。

用 goquery 解析 HTML 获取 meta[name="description"] 内容
Go 里没有内置的 DOM 解析器,直接用 net/html 太底层,容易漏掉属性大小写、命名空间或嵌套异常。推荐用 goquery——它模仿 jQuery API,对 meta 标签这种扁平结构特别友好。
常见错误是写成 doc.Find("meta[name=description]"),但实际多数页面用的是 name="description"(带引号),而 goquery 的选择器解析器对引号不敏感;真正踩坑的是:有些页面把描述放在 property="og:description",不是 name,得分开查。
- 先查
meta[name="description"],取content属性 - 没命中再查
meta[property="og:description"],同样取content - 注意用
.Attr("content")返回的是(string, bool),必须判空,否则 panic - 如果页面编码不是 UTF-8(比如 GBK),
goquery.NewDocumentFromReader可能解析乱码,建议先用golang.org/x/net/html/charset自动检测并转换
提取正文文本时绕开导航栏、侧边栏和广告区块
纯用 doc.Find("body").Text() 会把页脚版权、JS 注入的悬浮窗、甚至 `









