先看蜘蛛怎么處理 iframe
主流搜尋引擎的蜘蛛在解析 HTML 时,會把 iframe 的 src 当作一條新的連結来對待。也就是说,蜘蛛拿到入口頁之後,如果頁面上寫着 <iframe src="...">,它大概率會把那個地址放進待抓取队列,前提是這個地址對蜘蛛可见、可訪問,也没有被 robots.txt 或 nofollow 之類拦住。但這里有两個容易忽略的地方:一是 iframe 内的内容通常不會被算作目前入口頁的正文,二是它並不保證一定會被排到,队列积压时優先級會更低。
從渲染角度看,iframe 里的内容属于一份獨立文档,蜘蛛看到的是一份單獨的 HTML,而不是入口頁的一部分。這决定了它更适合被当成多一條 URL 出口,而不是给入口頁补充内容。
蜘蛛池里常见的三種 iframe 用法
- 入口頁嵌套内容頁:外层是入口頁,iframe 指向一個正文頁。蜘蛛顺着 src 走到内层,等于用一次抓取換来两條抓取记錄。
- 入口頁互嵌連結:多個入口頁用 iframe 互相引用,形成一張連結網。這種结构容易變成封閉环,蜘蛛走到一定深度之後就不太愿意繼續。
- 嵌入第三方资源:比如統計脚本、评论组件、地图。這類资源對蜘蛛池本身意义不大,反而多了一次外部請求。
抓取路径上實际會發生什么
蜘蛛訪問入口頁,解析出 iframe 的地址,然後按自己的节奏决定什么时候去訪問它。這里有几個点值得留意:
- iframe 的 src 如果是一個 302 或跳轉脚本,蜘蛛會跟着走,最後的落点才是真正被抓的 URL。
- 内层頁面如果自己又套了一层 iframe,就形成了嵌套鏈,深度太深时後面几层基本不會被訪問。
- 内层頁面如果返回 404、410 或 5xx,這次抓取就跑空了,日誌里只留下一條無效记錄。
- iframe 里的連結對蜘蛛来说依然是連結,内层頁面自身的外鏈也會被繼續發現。
几個常见誤区
把 iframe 当成内容複製工具
有人用 iframe 把同一份内容頁嵌到几十個入口頁上,以為能增加不少權重。實际上蜘蛛看到的是同一份内层文档,重复抓取同一個 URL,入口頁本身並没有因此得到額外内容,頁面正文反而顯得更薄。
以為 iframe 能让内层内容不被看到
iframe 並不會让内层内容隐身。只要蜘蛛能訪問到 src,它照样會抓取、照样會做内容判断。真正被改變的是入口頁自身的可讀内容量。
嵌套层級越多越好
嵌套越深,消耗的抓取预算越多,末端頁面越难被排到。超過两三层就要谨慎,很多入口頁的問题不是入口太少,而是出口太多太深。
實操上的一些建议
- 入口頁里保留一到两個 iframe 出口就够了,不要整頁堆满。
- iframe 的 src 尽量用静態、可直接訪問的 URL,避免经過多級跳轉。
- 内层頁面本身要有實质内容,不要只是另一個空壳。
- 入口頁不要靠 iframe 来承载主要内容,蜘蛛對入口頁的判断還是看它自己的 HTML。
- 如果内层頁面已经能通過普通 a 标簽到達,就不必再用 iframe 重复一次。
- 定期翻日誌里 iframe 地址的抓取结果,長期 404 或長期不来的,直接去掉。
iframe 在蜘蛛池里的作用更像一條額外的 URL 出口,它不解决内容問题,也不會让入口頁變得“更厚”。先想清楚希望蜘蛛多走到哪一頁,再决定放不放、放几层。