应精准清理非必要外链而非删除所有a标签,用正则匹配含域名但非本站的href,优先添加rel="nofollow"再观察,避免误删站内链接、下载链接及合法合作入口。

采集来的 HTML 页面里混着大量外链,不清理直接上线等于给别人的网站导流,还可能被搜索引擎判定为低质转载页。核心不是“删所有 a 标签”,而是精准识别并移除非必要、非授权的外链,同时保留站内跳转、下载链接、合法合作入口等关键链接。
怎么用正则快速剥离无关外链(href 值含域名但非本站)
浏览器控制台或 Node.js 脚本中执行最直接:匹配 href="http 或 href="// 开头、且不含当前域名的链接,再替换为空或转为 rel="nofollow"。
- 安全做法是先加
rel="nofollow",观察几天再彻底删:html.replace(/<a>]*href\s*=\s*["'](?!(https?:\/\/[^"']*example\.com|\/))/gi, '</a><a rel="nofollow"><li>如果目标是纯内容页(如知识库、FAQ),可直接删掉整个外链标签但保留文本:<code>html.replace(/<a>]*href\s*=\s*["'][^"']*["'][^>]*>(.*?)/gi, '$1')</a> - 注意协议相对链接:
//google.com也会被匹配,需在正则中显式排除:(?!\/\/(example\.com|cdn\.example\.com))
document.querySelectorAll 动态清理已加载页面的外链
适用于采集后前端渲染的页面(比如 CMS 预览页、后台富文本编辑器输出),需要在 DOM 加载完成后运行脚本,避免误删 iframe、script 的 src 属性。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
- 只处理
a标签的href:document.querySelectorAll('a[href]'),再逐个判断link.hostname !== location.hostname - 保留以
/、#、mailto:、tel:开头的链接,它们不会导流到外部站点 - 对确认为外链的节点,推荐改写而非删除:
el.setAttribute('href', '#');+el.classList.add('external-removed');,方便后续审计
Python + BeautifulSoup 安全批量清洗采集 HTML 文件
本地批量处理静态 HTML 文件时,正则容易误伤,必须用解析器。BeautifulSoup 能区分标签结构与文本内容,避免把 <a href="https://www.php.cn/link/6ef42a6eab211ddd71ac423a80b42d15'a',%20href=True):<br>%20%20%20%20parsed%20=%20urlparse(a['href'])<br>%20%20%20%20if%20parsed.netloc%20and%20parsed.netloc%20not%20in%20['example.com',%20'cdn.example.com']:<br>%20%20%20%20%20%20%20%20a.decompose()%20%20#%20%E5%BD%BB%E5%BA%95%E5%88%A0%E9%99%A4%E8%AF%A5%E6%A0%87%E7%AD%BE<br>%20%20%20%20%20%20%20%20#%20%E6%88%96%20a.replace_with(a.get_text())%20%20#%20%E4%BB%85%E7%95%99%E6%96%87%E6%9C%AC</pre></li><li>%E6%B3%A8%E6%84%8F%EF%BC%9A%E5%8A%A8%E6%80%81%E7%94%9F%E6%88%90%E7%9A%84%E9%93%BE%E6%8E%A5%EF%BC%88%E5%A6%82%20<code>onclick=" window.open>)不会被 <code>find_all('a') 捕获,需额外扫描 script 和 onclick 属性
真正难的不是删链接,而是判断哪些该留——比如用户投稿中引用的论文 DOI 链接、政府官网政策原文链接、开源项目 GitHub 地址,这些外链反而是内容可信度的一部分。清洗前务必建好白名单,而不是追求“零外链”。
立即学习“前端免费学习笔记(深入)”;


















