讨论收錄时,很多人习惯從“提交”開始:提交给搜尋资源平台、提交 sitemap、手動請求抓取。但提交只解决“告诉對方有這么一個地址”,真正决定頁面能不能進入抓取队列的,是爬虫在日常爬行中能不能自然地遇到它。換句话说,URL 的發現环节没做好,後面提交多少次都只是补充。
一、URL 被發現的三條主要路径
搜尋引擎發現新 URL 的方式並不神秘,大致可以归為三類,它們各自的覆盖范围和时效性不一样。
1. 站点地图(sitemap)
sitemap 的作用是批量声明,适合让爬虫知道“這個站点還有哪些地址”。它的優点是覆盖全,缺点是不保證抓取顺序——放進清單不等于會被優先處理。适合放:新發布的内容、更新频繁的栏目頁、容易漏掉的分頁或归档。不适合放:已被大量重复參數污染、指向 404 或已下线的地址。
2. 站内連結
這是最稳定也最有價值的發現方式。爬虫顺着導航、列表頁、正文内鏈一路走,連結层級越浅、入口越明顯,被發現的概率越高。一個頁面如果只能通過站内搜尋框或某個深层篩選條件到達,基本等于孤立頁面。
3. 外部連結
其他站点的連結既带来發現路径,也带来一定的信任传递。它的特点是不可控——什么时候被爬、連結會不會被撤掉,都不由你决定。所以它适合作為补充,而不是唯一入口。
二、頁面明明存在,為什么一直没被發現
常见原因集中在下面几類:
- 頁面是孤立的:没有任何站内連結指向它,只存在于資料库或後台列表里。
- 連結由 JavaScript 生成:如果連結没有渲染成可抓取的 HTML,爬虫可能看不到它,需要先確認渲染是否正常。
- 被 robots.txt 拦截:抓取被挡住,URL 自然不會被繼續處理(注意這挡的是抓取,不是索引本身)。
- 层級太深:從首頁要点五六次才能到達,抓取優先級會被不断稀释。
- 入口被 noindex 頁面占據:唯一能到達目标頁的中間頁被设了 noindex,路径可能被中断。
發現、抓取、收錄是三件不同的事。頁面没被收錄时,先確認它有没有被“發現”,再去看抓取日誌,很多問题在這一步就能定位。
三、按頁面類型選擇發現方式
不同頁面适合的路径不一样,混着用容易浪費精力:
- 新發布的文章:站内入口(首頁、栏目頁、相關推荐)加 sitemap,两者配合最稳。
- 商品或詳情頁:靠分類列表和站内搜尋的结果頁作為入口,注意不要让篩選參數把路径切碎。
- 聚合頁、标簽頁:如果數量大、内容薄,先想清楚是否值得被發現,再决定要不要给入口。
- 活動頁、临时頁:有时效性的頁面可以用外鏈加速,但要提前規划到期後的處理方式。
四、可以马上检查的几件事
- 随机挑几個想收錄的頁面,看它們從首頁出發最少几次点击能到達。
- 检查導航和列表頁里的連結是不是真實的 a 标簽,而不是点击事件触發的按钮。
- 看 sitemap 里的地址是否和實际可訪問地址一致(协议、域名、尾斜杠)。
- 確認這些頁面没有被 robots.txt 或 noindex 意外挡住。
- 观察一段時間内的抓取日誌,看爬虫是否真的訪問過這些入口。
URL 發現做扎實之後,抓取和收錄才有讨论的基础。它不保證頁面一定被收錄,但能减少那種“頁面做得不错,爬虫却始终没来過”的情况。