同一批新連結,有的几小时就被抓,有的埋了两周也等不到。除了 Sitemap、外鏈和主動推送,頁面本身就是一個岔路口:蜘蛛解析完 HTML 後,會把遇到的連結放進待抓队列,而它先走哪一條,和連結出現的位置、顺序、上下文都有關系。
蜘蛛解析頁面时的基本顺序
蜘蛛拿到的是一段 HTML 文本,它的讀取大致是從上往下的:
- 先處理头部区域,包括 canonical、hreflang、meta robots 等,這些會先影响它對整個頁面的判断;
- 再顺着 body 往下走,遇到 a 标簽的 href 就抽出 URL;
- 連結所在的区块、前後的文字、锚文本本身,通常也會被一起记錄。
需要留意的是,這里的顺序是 HTML 里的书寫顺序,不是视觉上的位置。用 CSS 把某個区块挪到頁面上方,對蜘蛛来说它依然排在後面;反過来,寫在源碼靠前的模块,即使视觉上不起眼,也更容易被先處理。
几種区块位置的抓取体感差异
從訪問日誌里長期观察,大致能看到這样的差別,可以作為參考:
- 主導航:出現频率最高,几乎每次抓取都會重新走一遍,是站内最稳定的入口。
- 正文内的連結:抓取意愿通常僅次于導航,尤其是有上下文、锚文本描述清楚的連結,更容易被当成有效路径。
- 相關推荐與列表翻頁:中等水平,受頁面自身被抓频率的限制,翻到後面几頁的概率明顯下降。
- 頁脚、备案與版權連結:被完整走到的概率偏低,很多頁面只走其中一部分。
這不是硬規則,但可以拿来判断“重要連結该放哪儿”。如果几個關键頁面迟迟不被抓,先確認它們是不是只出現在頁脚、折叠层或者需要点击才展開的区域里。
几種可控的引導手段
把關键入口放進導航或面包屑
導航和面包屑几乎出現在每個頁面上,又位于源碼靠前的位置,是让一批頁面被反复走到的省力做法。新上线的栏目頁、聚合頁,優先考虑在這里给一個稳定入口,而不是只靠底部連結。
正文里给出带上下文的锚文本
“点击這里”“更多”這類锚文本,對蜘蛛判断目标頁面主题帮助有限。換成能概括目标内容的短语,既方便讀者,也让這條連結在被抽取时更有意义。同一頁面内,指向同一目标的多條連結尽量合並或统一寫法,减少重复。
列表頁保持稳定的分頁结构
分頁連結使用固定的 URL 規則,並让上一頁、下一頁、頁碼這些連結在源碼中位置稳定。频繁變動分頁路径,會让已经建立的抓取路径需要重新走一遍。
少用纯 JS 点击跳轉
依赖脚本在点击时才生成 URL 的寫法,第一遍抓取往往拿不到目标地址。如果必须這样做,至少在頁面上保留一份可被直接讀取的普通連結,让不执行脚本的抓取也能看到出口。
連結數量與顺序的取舍
一頁塞進几百條連結,蜘蛛不一定每條都走。队列里排不進去的連結,等于没寫。比較稳妥的做法是:把最重要的十几二十條放在靠前、有上下文的区域,其余的分流到列表頁或专题頁,由更专门的頁面去承载長尾。
連結多不等于机會多,抓取队列里排不進去的那部分,實际效果接近不存在。
怎么观察它是否按你预期在走
判断引導是否有效,最直接的方式還是看日誌,重点關注几件事:
- 新頁面從上线到第一次被抓,間隔了多久;
- 同一頁面是被導航带進来的,還是由列表頁、正文連結带進来的;
- 哪些連結長期没有出現在日誌里,它們在源碼中的位置是否有共性;
- 調整内鏈位置之後的一两周,抓取分布有没有變化。
把這几項做成一個简單的记錄表,比凭感觉判断更可靠。一次只改一個變量,观察一個窗口期,才分得清是哪一處改動起了作用。
整体上,頁面内的連結顺序和位置不决定抓取结果,但它决定了蜘蛛走到某個目标的难易程度。源碼顺序顺一点、锚文本清楚一点、連結數量收一点,長期积累下来,重要頁面的發現速度會更稳定一些。