使用 Google 抓取方式,测试 React 驱动的网站 SEO

本文讲的是使用 Google 抓取方式,测试 React 驱动的网站 SEO,


我最近进行了一项测试,它有关客户端渲染的网站是否能避免被搜索引擎的机器人爬取内容。就如我此文所述,React 并不会破坏搜索引擎的索引。

现在,我开始实施我的下一个步骤。为了了解 Google 到底能爬取和索引哪些内容,我建立了一个 React 的沙盒项目。

建立一个小型的网页应用程序

我的目标只是建立一个单纯的 React 应用程序,用最少的时间配置 Babelwebpack 和其他一些工具。之后,我会尽可能快地把这个应用程序部署到公网环境。

我也想能在几秒内就把更新部署到生产环境中。

考虑到要实现这些目标,理想的工具是 create-react-app 和 GitHub Pages

有了 create-react-app,我能在 30 分钟内创建一个小型的 React 应用程序。只需要输入这些指令:

create-react-app seo-sandbox
cd seo-sandbox/
npm start

我更改了默认的文本和 logo,修改了一些格式,然后瞧瞧看 —— 一个 100% 由客户端程序渲染的网页完成了,让Googlebot 好好琢磨一下。

你可以访问我 Github 上的项目工程了解更多

部署到 GitHub Pages

create-react-app 非常有用。简直和我心有灵犀。在我执行了 npm run build 指令后,它就识别出我准备计划在 GitHub Pages上发布我的项目,并且告诉我应该这么做:

这是我托管在 GitHub Pages 上的 SEO 沙盒

我把这个网站的名字设定为 "Argelpargel",因为这个词从未被 Google 收录过。

配置 Google 搜索终端

Google 为网站所有者提供了一份免费的套件工具叫做 Google 搜索终端,它可以被用于测试他们的网站。

为了建立这个服务,我为这个网站增加一个称为 property 的东西:

为了证明我就是这个网站的所有者,我不得不向 Google 上传一个特别的文件来找到这个网站。多亏了这个有用的方法 npm rum deploy,让我在很快的时间内就完成了。

Google 眼中我们网站长什么样

环境配置完毕以后,我现在能使用 "Fetch as Google" 工具,用 Googlebot 的方式看看我们的 SEO 沙盒页面:

当我点击 "Fetch and Render" 按钮,就能检查到由 React 驱动的页面上哪一部分能真正被 Googlebot 检索到:

目前我所发现的

发现 #1: Googlebot 以异步加载的形式来阅读内容

我想最先测试的是 Googlebot 会不会对异步渲染的内容进行检索或者爬取。

在页面被加载完毕后,我的 React 应用程序为数据发送了一个 Ajax 请求,并用这些数据更新了部分页面上的内容。

为了模拟这个过程,我为应用程序的组件增加了一个构造器,它通过使用一个 window.setTimeout 方法为组件设定状态。

constructor(props) {
    super(props);
    this.state = {
        choMessage: null,
        faq1: null,
        faq2: null,
        faq3: null
    };
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        choMessage: 'yada yada'
    })), 10);
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        faq1: 'bla bla'
    })), 100);
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        faq2: 'shoo be doo'
    })), 1000);
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        faq3: 'yacketiyack'
    })), 10000);
}

→ 源代码已提交到 GitHub

我使用了 4 种超时时间,10 毫秒, 100 毫秒, 1 秒 和 10 秒。

结果表明,Googlebot 只会在 10 秒的超时时间上失败。但是其他 3 个超时时间都成功了,并且对应的文本块都会显示在"Fetch as Google" 窗体内。

React Router 让 Googlebot 迷了眼

我把 React Router (version 4.0.0-alpha.5) 添加到网页应用程序中,它能创建一个菜单条加载不同的子页面(从他们的文档里直接复制粘贴过来):

太出乎意料了 - 当我点击了 “Fecth As Google”后,我只看到了一片绿色背景的页面:

以客户端渲染的界面使用 React Router 影响了搜索引擎的友好性。但这是否只是 React Router 4 上的问题仍旧需要观察,或者 React Router 3 稳定版本上也存在这样的问题。






原文发布时间为:2016年11月22日


本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2024-10-01 10:30:41

使用 Google 抓取方式,测试 React 驱动的网站 SEO的相关文章

利用“GOOGLE抓取”测试Robots书写正确性

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 利用GOOGLE管理员工具测试Robots.TXT 与 页面内容抓取,GOOGLE管理员可以说是网站与GOOGLE间接沟通的工具,虽然G.cn现在已经移民.导致使用GOOGLE时会经常出现搜索错误或超时问题,但是GOOGLE目前所发布出来的工具无不是最权威的工具(Google Analytics .Google Trends.Google a

谷歌:通过“Googlebot 抓取方式”向谷歌提交URL

8月12日消息:近日,谷歌网站站长工具中的"Googlebot 抓取方式"功能提供了一种向Google提交全新的URL以及更新URL的收录方法.允许站长提交刚刚推出新网站,或者新增加 一些重要新页面,辅助谷歌快速索引网站. 谷歌称,当站长像Googlebot那样成功抓取了一个URL,那么,站长将会在谷歌站长工具中看到提交该URL到谷歌的索引这一选项.当站长以这样的方式提交URL后,通常在一天之 内,Googlebot就会抓取该URL.然后,谷歌会考虑是否将其列入谷歌的索引中.但请注意,

《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动

6.4 使用多种方式测试Linux驱动 Android深度探索(卷1):HAL与驱动开发 在上一节已经实现了一个简单的Linux驱动程序,该驱动的功能是统计给定字符串中的单词数,并且在最后已经将该Linux驱动的源代码成功编译成动态Linux驱动模块word_count.ko.下一步就是测试该模块.测试的方法很多,最常用的就是直接在Ubuntu Linux中测试.当然,这对于本章实现的Linux驱动是没问题的,但是对于需要直接访问硬件的驱动在Ubuntu Linux上测试就不太方便.在这种情况下

php多线程抓取信息测试例子

PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程.多线程在处理重复性的循环任务,能够大大缩短程序执行时间. PHP扩展下载:https://github.com/krakjoe/pthreads PHP手册文档:http://php.net/manual/zh/book.pthreads.php 1.扩展的编译安装(Linux),编辑参数 --enable-maintainer-zts 是必选项: cd /Data/tgz/php-5.3.8 ./conf

熟知蜘蛛两种爬取方式来调整网站布局

近段时间百度对反垃圾页面的执行力度在日趋增强这让很多站点排名都受到大幅波动,当然笔者小站也不例外,但小鱼始终明白一点搜索引擎不断调整算法的本身是为了符合用户体验这也说明一点只要我们站在用户的角度去运营自己的小站那么网站的排名就自然不会差.今天笔者针对站内收录这块给大家分享下熟知蜘蛛爬取的两种方式来改变网站结构的布局. 网站收录对于很多朋友来说一直是一个追问的话题,除了我们通常所说的sitemap制作外还有一点不可小却那就是网站的层次布局,为什么这样说呢?下面笔者就蜘蛛的两种爬取方式来为你一一说道

Google爬虫如何抓取JavaScript的?

我们测试了谷歌爬虫是如何抓取 JavaScript,下面就是我们从中学习到的知识. 认为 Google 不能处理 JavaScript ?再想想吧.Audette Audette 分享了一系列测试结果,他和他同事测试了什么类型的 JavaScript 功能会被 Google 抓取和收录. 长话短说 1. 我们进行了一系列测试,已证实 Google 能以多种方式执行和收录 JavaScript.我们也确认 Google 能渲染整个页面并读取 DOM,由此能收录动态生成的内容. 2. DOM 中的

现在hao123网站数据采用异步加载的方式,有没有方法可以比较简单的抓取或解析出来

问题描述 现在hao123网站数据采用异步加载的方式,有没有方法可以比较简单的抓取或解析出来 现在hao123网站数据采用异步加载的方式,用jsoup或httpclient都无法将页面内容取出来,是我没有用来jsoup或httpclient还是解析不了或抓不了,有没有什么方法可以解析.求大神指点.

几种PHP实现网页抓取的程序代码

抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单. 一.Ganon 项目地址: http://code.google.com/p/ganon/ 文档: http://code.google.com/p/ganon/w/list 测试:抓取我的网站首页所有class属性值是focus的div元素,并且输出class值 <?php include 'gan

[20140212]linux下使用tcpdump抓取sql语句

[20140212]linu下使用tcpdump抓取sql语句.txt 我们生产系统问题多多,经常要跟踪用户执行的sql语句,当出现问题时要跟踪比较麻烦,我需要一个快捷的方式"看到"用户执行的sql语 句,想到了tcpdump抓包软件. 我测试建立shell脚本如下: #! /bin/bash /usr/sbin/tcpdump -l -i eth0 -s 16384 -A -nn src host $1 and dst port 1521 --说明: -- -l     Make s