如何让搜索爬虫正确地索引具有无限滚动的页面?

时间:2012-05-28 11:39:54

标签: web-crawler infinite-scroll

我有一个网站,我在其上实现无限滚动:当用户到达页面末尾时,进行AJAX调用并将新内容附加到页面底部。但是,这意味着搜索爬虫无法获得第一个“分页符”之后的所有内容。例如,我有一个页面列出了所有带有“infographic”标签的项目。实际上有几十个这样的项目,但是爬虫只能看到前10个,因为其他项目是根据内容相对于浏览器窗口的位置加载的。由于抓取工具没有浏览器窗口,因此根本不会加载新项目。

让搜索抓取工具以无限滚动方式访问网页的完整内容,同时还允许用户享受无限滚动和缺乏分页的正确方法是什么?

6 个答案:

答案 0 :(得分:19)

graceful degradation一致,你不应该依赖JavaScript来获得与分页一样重要的东西。我可能首先实现一个普通的分页系统(搜索引擎可以索引),然后使用JS来隐藏分页链接并实现无限滚动解决方案。

答案 1 :(得分:4)

创建一个查看全部页面

创建另一个页面,其中列出了所有内容并链接到通常包含在无限滚动页面上的项目。然后放置一个名为all whatever的无限滚动页面的小链接(可能位于最底部)。换句话说,如果您的网页列出了产品,则该链接应为Show All Products或类似名称。如果页面是博客文章,则链接应该类似于All Articles。是的,人类可能不喜欢长时间的负载,但对谷歌而言,它并不重要。它将下载并正常关注其中的链接。

此外,如果您的分页正在迭代数万个项目,那么您可以在类似于博客存档工作方式或产品目录工作的部分中细分“查看所有页面”。关键在于,您正在为没有javascript的人提供替代方法,而那些真正希望看到所有内容的人,同时也为Google和甚至其他搜索引擎抓取您的网页库存。< / p>

最后,作为辅助措施,添加一个/sitemap.xml文件,其中包含每篇文章/产品/库存的索引或其他内容。见http://www.sitemaps.org/

您可以观看标题为Pagination and SEO的官方Google网站管理员视频,其中包含查看所有概念,分页,规范网址以及Google的rel = next和rel = prev属性。

http://www.youtube.com/watch?v=njn8uXTWiGg

答案 2 :(得分:2)

正确的方法是允许no-js-pagination。通常,大多数网站都会在Feed的底部插入一个分页按钮。当用户向下滚动时,自动分页将从Feed底部的按钮操作触发,这可能会在发生时隐藏。这意味着,文档中的html元素会触发自动分页,它不是纯粹的javascript。如果这个按钮是一个也可以提供html的锚标记,那么网络抓取工具就可以访问它。这里输入了@Victor Stanciu提到的优雅降级概念:始终在标准JS响应之上提供HTML回退响应。

答案 3 :(得分:0)

同样 - 您在给定页面上拥有的内容越多 - 抓取工具对每个单词的权衡就越少,因此您最终可能不会在每个页面上获得过多的内容。

因此,正如exizt所建议的那样,使用正常的分页和友好的网址。

答案 4 :(得分:0)

答案 5 :(得分:0)

虽然这听起来不错,但我可以看到这会对您的Pagerank产生负面影响。爬虫必须通过的信息量将导致内容中链接的排名下降,使得原始点在其中写入爬行器是无用的。

您需要的很多内容都应该使用您的站点地图和元标记。只要抓取工具仍然可以通过单个页面调用访问内容,您就可以了。