我有一个实现无限滚动的网站:当用户到达页面末尾时,会进行 AJAX 调用并将新内容附加到页面底部。然而,这意味着搜索爬虫无法获取第一个“分页符”之后的所有内容。例如,我有一个页面列出了所有带有“信息图表”标签的项目。实际上有几十个这样的项目,但爬虫只能看到前 10 个,因为其他项目是根据内容相对于浏览器窗口的位置加载的。由于爬虫没有浏览器窗口,因此根本不会加载新项目。
那么,怎样才能让搜索爬虫在无限滚动的情况下访问网页的全部内容,同时又能让用户享受无限滚动和无分页的乐趣呢?
我有一个实现无限滚动的网站:当用户到达页面末尾时,会进行 AJAX 调用并将新内容附加到页面底部。然而,这意味着搜索爬虫无法获取第一个“分页符”之后的所有内容。例如,我有一个页面列出了所有带有“信息图表”标签的项目。实际上有几十个这样的项目,但爬虫只能看到前 10 个,因为其他项目是根据内容相对于浏览器窗口的位置加载的。由于爬虫没有浏览器窗口,因此根本不会加载新项目。
那么,怎样才能让搜索爬虫在无限滚动的情况下访问网页的全部内容,同时又能让用户享受无限滚动和无分页的乐趣呢?
沿着优雅降级的思路,你不应该依赖 JavaScript 来完成像分页这样重要的事情。我可能会先实现一个正常的分页系统(搜索引擎可以索引),然后使用JS隐藏分页链接并实现无限滚动解决方案。
制作另一个页面,上面列出所有内容并链接到通常包含在无限滚动页面上的项目。然后放置一个名为的无限滚动页面的小链接(可能在最底部)all whatever
。换句话说,如果您的页面列出产品链接应该说Show All Products
或类似。如果页面是博客文章,那么链接应该类似于All Articles
. 是的,人类可能不喜欢长负载,但对于谷歌来说,它的大小并不重要。它将下载它并正常访问其中的链接。
此外,如果您的分页遍历数以万计的项目,那么您可以将您的“查看所有页面”分解为类似于博客存档或产品目录的工作方式的部分。关键是您为没有 javascript 的人类和那些真正想查看所有内容的人提供了一种替代方法,同时也为 Google甚至其他搜索引擎提供了一种可以抓取您的页面清单的方法。
最后,作为辅助措施,添加一个/sitemap.xml
文件,该文件具有每个文章/产品/库存或其他任何内容的索引。见http://www.sitemaps.org/
您可以观看标题为分页和 SEO的官方 Google 网站管理员视频,了解查看所有概念、分页、规范 url 和 Google 的 rel=next 和 rel=prev 属性。
正确的方法是允许 no-js-pagination。通常大多数网站所做的是在提要的底部插入一个分页按钮。当用户向下滚动时,自动分页会从提要底部的按钮动作触发,在发生这种情况时可能会被隐藏。这意味着,文档中的 html 元素触发了自动分页,它不是纯 JavaScript。如果这个按钮是,比如说,一个锚标签,它也提供 html,那么网络爬虫将可以访问它。这里引入了@Victor Stanciu 提到的优雅降级的概念:始终在标准 JS 响应之上提供 HTML 后备响应。
此外 - 您在给定页面上拥有的内容越多 - 爬虫对每个单词的权重就越少,因此您最终可能不会因为每个页面上的内容过多而没有命中。
因此,正如 exizt 所建议的那样,宁愿使用正常的分页和友好的 url。
看看这个:https ://developers.google.com/webmasters/ajax-crawling/?hl=de 。这也是一个很好的解释:http ://coding.smashingmagazine.com/2011/09/27/searchable-dynamic-content-with-ajax-crawling/
虽然这听起来是个好主意,但我可以看到这会对您的页面排名产生负面影响。爬虫必须通过的信息量将导致内容中链接的排名下降,从而使原始点在其中给爬虫写信毫无用处。
您应该使用站点地图和元标记来完成很多您想要的事情。只要爬虫仍然可以通过单独的页面调用访问内容,你应该没问题。