[点晴永久免费OA]搜索引擎爬虫完整抓取流程(含 JS 动态渲染机制)
|
admin
2026年7月2日 9:25
本文热度 94
|
整体四大阶段:抓取 → 渲染 → 提取 → 入库索引
一、阶段 1:种子 URL 启动、发现链接(爬取入口)
初始种子库
搜索引擎内置海量种子网址:提交的网站、历史收录站点、域名服务商收录、导航站、外部外链。
DNS 解析 + HTTP 请求
爬虫向服务器发送 GET 请求,携带爬虫专属 UA(百度 spider、Googlebot),优先获取页面原始 HTML。
提取页面内所有链接
解析原始 HTML 里的 <a href>、iframe、跳转链接,存入待爬队列,循环抓取新页面。
关键区分:这一步只拿到静态源码,AJAX/JS 渲染的数据此时看不到。
二、阶段 2:静态 HTML 初步判断,分两条处理链路
链路 A:纯静态页面(无 JS 动态数据)
原始 HTML 已经包含完整文字、商品、文章内容,直接跳过渲染,进入内容提取。
链路 B:含 JS 动态加载页面(Vue/React/AJAX/ 懒加载)
搜索引擎不会只靠原始源码,会启用无头渲染引擎二次处理,完整流程:
启动内置精简 Chrome 内核(无头浏览器,无界面);
加载页面全部资源:JS、CSS、接口请求、图片;
执行页面 JS 代码,等待 fetch/axios 异步接口返回数据;
JS 把数据插入 DOM,生成渲染完成后的完整页面快照;
爬虫读取这份最终快照,才能拿到动态加载的列表、详情。
渲染存在严格限制(很多动态内容抓不到)
超时限制:爬虫等待渲染有时间上限(一般几秒),接口慢、JS 报错、资源过大,会提前停止渲染,丢失数据;
无人工交互模拟:不会自动下拉滚动、点击按钮、切换 Tab 才加载的内容,只会抓页面初始化自动加载的数据;
登录 / 鉴权接口:动态数据需要 Cookie、登录 Token、前端加密签名,爬虫无法访问接口,拿不到内容;
前端路由 SPA 空白页:仅一个空根节点,所有内容靠 JS 路由跳转,初次渲染无内容,收录效果极差。
三、阶段 3:内容清洗与信息提取
剔除无用模块:广告、侧边栏、弹窗、导航重复内容、版权声明;
拆分核心信息:标题 title、meta 描述、正文文本、H1-H6 标题、图片 alt、发布时间、价格、标签;
识别结构化数据:商品价格、文章日期、评论、评分等 Schema 结构化标签,用于搜索结果展示;
过滤垃圾内容:乱码、空白页、重复内容、低质采集内容。
四、阶段 4:去重、入库、建立倒排索引
页面指纹比对去重
对页面正文生成哈希指纹,相同内容、镜像网站只保留一份,避免重复收录;
权重与链接计算
统计站内内链、站外外链数量、页面更新频率、域名质量,给页面打分;
构建倒排索引
把页面所有关键词、短语映射到对应网页,用户搜索关键词时快速匹配出结果;
定时回访更新
爬虫会按页面活跃度定期重爬:资讯站几小时一次,企业官网几天 / 几周一次,更新变动内容。
五、补充关键机制
1. robots.txt 抓取控制
爬虫访问网站前先读取/robots.txt,遵守禁止抓取规则,屏蔽指定目录、页面。
2. 延迟抓取、防服务器压力
同一 IP 间隔几秒再发起下一次请求,不会高频并发访问,防止压垮中小型网站。
3. 区分移动端爬虫
有独立移动 UA 爬虫,优先适配移动端渲染,用于手机端搜索结果。
六、简单总结 JS 动态页面抓取逻辑
第一次请求:拿到空白静态 HTML;
识别页面含动态 JS,启动浏览器内核渲染;
执行 JS、等待接口,生成完整 DOM;
读取渲染后的页面正文用于收录;
需要点击 / 滚动才加载的数据,爬虫无法获取,收录缺失。
该文章在 2026/7/2 9:25:37 编辑过