網站收錄

折叠面板和懒加载里的内容,蜘蛛能讀到吗

頁面在浏览器里看着内容很足,搜尋引擎拿到的可能只有一半。折叠面板、選項卡、懒加载容器、需要点击才展開的区块,都属于内容可见性問题。本文按抓取和索引两個环节,說明哪些寫法蜘蛛能讀到、哪些讀不到,並给出一份從查看源代碼到對照索引的自查顺序。

網站收錄

折叠面板和懒加载里的内容,蜘蛛能讀到吗

同一個頁面,在浏览器里看着内容很足,搜尋引擎拿到的版本却可能只有上半截。問题常常不在整站渲染,而在几個具体的位置:折叠面板、選項卡、懒加载容器、需要点击或滚動才出現的区块。抓取和收錄是两個环节,先要能把内容拿到,再判断這段内容值不值得進索引。可见性出問题的頁面,大多卡在前一個环节。

抓取到的是 HTML,不是屏幕

搜尋引擎抓取时首先拿到的是服務器返回的 HTML,之後才可能执行 JS 补全内容。所以判断一段内容能不能被讀到,第一步是看它在初始 HTML 里有没有。

  • HTML 里就有文字,且没有被刻意隐藏:一般能讀到。
  • HTML 里没有,要等 JS 請求接口再插入:取决于渲染是否执行到那一步,不够稳定。
  • HTML 里只有占位符,真實内容放在属性里,例如 data-src:很多时候讀不到。

懒加载:影响最大的是图片,其次才是文字

图片懒加载現在很常见,做法是 src 留空或给一張占位图,真實地址放在 data-src,等元素進入视口再替換。文字内容通常不受影响,但如果整個商品列表、文章段落都是滚動到底部才由 JS 追加的,就要留意。

  • 图片:尽量让 src 或 srcset 指向真實资源,或保留 noscript 里的回退寫法。
  • 列表:首屏之外的條目最好有對應的分頁 URL,而不是只有無限滚動。
  • 一個粗略的评测办法:临时關掉 JS,看還剩多少正文,這個残量大致反映最低限度的可讀内容。

折叠面板和選項卡:多數能讀到,但別赌

如果折叠区域的内容本来就寫在 HTML 里,只是靠 CSS 或一段脚本控制展開,那它通常存在于 DOM 中,能被讀到。两種情况例外:一是点击後才去請求接口、把内容動態插進来的,本质就是懒加载;二是内容用图片或画布渲染的,可讀性更差。

自查方法很直接:打開查看網頁源代碼,搜一段只出現在折叠区里的文字。能搜到,說明至少進入了 HTML;搜不到,就要按懒加载的思路處理。

CSS 隐藏與视觉隐藏

display 為 none、visibility 為 hidden 的元素一般還留在 DOM 中,可能被抓取程序讀到,但不要指望它被当成正文參與判断。用隐藏文字堆關鍵詞属于老式做法,收益低、風險高。屏幕阅讀器专用的隐藏類只要用在该用的地方,没有額外問题。

登入墙、付費墙和强制彈窗

  • 需要登入才能看到的正文,蜘蛛得到的是登入頁或提示语,收錄的也往往是那個版本。
  • 付費墙要区分開:可公開的标题、首段和摘要尽量放在 HTML 里,剩下的再谈限制。
  • 打開頁面就整屏覆盖的彈窗和插屏,會影响内容提取,能延後或减少就减少。

一份可执行的自查顺序

  1. 用查看源代碼,搜尋正文中的獨有關鍵詞。
  2. 临时關閉 JS,看頁面還剩哪些内容。
  3. 检查图片是否為空 src,有没有 noscript 回退。
  4. 確認無限滚動是否有對應的分頁地址可供抵達。
  5. 用搜尋平台的 URL 检查工具查看渲染後的 HTML,與源代碼對比。
  6. 把服務器日誌里该 URL 的抓取记錄,和索引狀態對照,看断在哪一步。
内容可见性不是玄学:先保證正文在 HTML 里,再保證它没有被遮住,最後才考虑怎么让它被索引。顺序颠倒,後面的努力容易被前面卡住。