SEO剖析师的头衔,就是寻觅很多免费数据来源,并将其整理成有见地的东西。 为什么? 因为将客户的主张根据猜测没有任何价值。 最好将高质量的数据与杰出的剖析相结合,以协助咱们的客户更好地了解对他们而言重要的方面。
在本文中,我将告诉您怎么开端运用一些免费资源,并阐明怎么组合独特的剖析办法,这些办法能够为您的博客文章供给有用的见地(假如您是作家,则是署理组织,假如您是SEO,或许您的网站(假如您是自己进行SEO的客户或所有者)。
运用Google查找与某敞开 API东西结合做免费SEO剖析
我要运用的计划是我要剖析一些SEO特点(例如,反向链接,页面权限等),并检查它们对Google排名的影响。 我想回答以下问题:“反向链接真的对进入SERP的第1页有效吗?”和“我真的需求在前10个成果中取得哪种页面权威评分?”为此,我需求结合起来来自许多Google查找的数据,其间包括我要衡量的具有SEO特点的每个成果的数据。
让咱们开端并研讨怎么组合以下使命以实现此方针,这些使命都能够免费设置:
运用Google自定义查找引擎查询
运用免费的某(能够挑选自己喜欢的 我国或许美国的都能够) API帐户
运用PHP和MySQL搜集数据
运用SQL和R剖析数据
运用Google自定义查找引擎查询
咱们首要需求查询Google并存储一些成果。 为了坚持Google服务条款的正确性,咱们不会直接抓取Google.com,而是会运用Google的“自定义查找”功用。 Google的自定义查找首要旨在让网站所有者在其网站上供给相似Google的查找小部件。 可是,还有一个免费的根据REST的Google查找API ,可让您查询Google并以流行的JSON格局检索成果。 有配额约束,可是能够装备和扩展配额约束 ,以供给可运用的杰出数据样本。
在正确装备为查找整个网络后,您能够将查询发送到自定义查找引擎(在咱们的示例中是运用PHP),并将其视为Google呼应,尽管有一些留意事项。 运用自定义查找引擎的首要约束是:(i)它不运用某些Google Web查找功用(例如个性化成果),而且; (ii)假如您包括十个以上的网站,则或许包括Google索引的一部分成果。
尽管有这些约束,但仍有许多查找选项能够传递给自定义查找引擎,以署理您或许希望Google.com回来的内容。 在咱们的场景中,咱们在拨打电话时传递了以下内容:
https://www.google.com/customsearch/v1?key=&userIp=&cx&q=iPhone + X&cr=countryUS&start=
1
哪里:
https://www.google.com/cn/customsearch/v1 –是Google自定义查找API的网址
key=–您的Google Developer API密钥
userIp=–计算机的IP地址
cx=–您的Google自定义查找引擎 ID
q=iPhone + X – Google查询字符串(“ +”替代“”)
cr=countryUS –国家/区域约束(来自Goolge的“ 国家/区域名称”列表)
start=1 –回来的第一个成果的索引-例如SERP页面1。连续调用将使其递增以得到页面2–5。
谷歌曾说过谷歌自定义查找引擎与谷歌.com有所不同 ,可是在有限的产品测验中,我比较了两者之间的成果,这让我感到鼓动,因而继续进行剖析。 也就是说,请记住,以下数据和成果来自Google自定义查找(运用“整个网络”查询),而不是Google.com。
运用免费的某 API帐户
应用程序编程接口 (API)。 要运用它,您需求注册一个 API密钥 ,该密钥是免费的,但有约束,每十秒钟一次查询 。 具有免费的帐户和API密钥,然后您能够查询Links API并剖析以下目标 :
运用Google查找与某敞开 API东西结合做免费SEO剖析
在调用Links API之前,将xxx API代码增加在一起,如下所示:
www.apple.com%2F?Cols=103616137253&AccessID=xxx_ACCESS_ID&
过期=1560586149&Signature=
成果:
http://lsapi.xxxx.com/linkscape/url-metrics/“ class=” redactor-autoparser-object“> http://lsapi.sxxxx.com/linksc ... – API的URL
http%3A%2F%2F www.apple.com.tw%2F –咱们要获取数据的编码URL
Cols=103616137253 –上表中的Moz API代码总和
AccessID=xxx_ACCESS_ID – 拜访ID的编码版别(可在您的API帐户中找到)
Expires=1560586149 –查询超时-设置为未来几分钟
Signature=– 拜访ID的编码版别(在您的API帐户中找到)
将回来相似以下JSON的内容:
数组
(
[ut]=>apple
[uu]=> www.apple.com/ [ueid]=> 13078035
[uid]=> 14632963
[uu]=> www.apple.com/
[ueid]=> 13078035
[uid]=> 14632963
[umrp]=> 9
[umrr]=> 0.8999999762
[fmrp]=> 2.602215052
[fmrr]=> 0.2602215111
[us]=> 200
[upa]=> 90
[pda]=> 100
)
有关运用PHPPerl,Python,Ruby和Javascript查询数据的一个很好的起点,请参阅Github上的此存储库 。 我挑选运用PHP。
运用PHP和MySQL搜集数据
现在咱们有了Google自定义查找引擎和某 API,简直能够捕获数据了。 Google和某东西经过JSON格局呼应请求,因而许多流行的编程言语都能够查询。 除了我挑选的言语PHP外,我还将Google和xxx的成果都写到了数据库中,并为此挑选了MySQL Community Edition 。 也能够运用其他数据库,例如Postgres,Oracle,Microsoft SQL Server等。这样做能够运用SQL(结构化查询言语)以及其他言语(例如R)进行数据的持久性和即席剖析。后来)。 创立用于保存Google查找成果的数据库表(带有用于排名,URL等的字段)和用于保存xxx数据字段(ueid,upa,uda等)的表之后,咱们就能够规划数据搜集计划了。
Google运用自定义查找引擎供给了满足的配额 (每天运用相同的Google开发者操控台密钥进行多达1亿次查询),可是某些东西免费API的有上限,假如需求高级的就要购买了。根据计划和计划的不同,当我仅仅在探究免费选项时,我规划了代码,以在2页的SERP(每页10个成果)中搜集125个Google查询,使我能够坚持在2500行的配额之内。 至于哪些查找能够触发Google,有很多资源可供运用。 我挑选运用Mondovo,因为它们供给了许多类别的列表,每个列表最多500个单词,对于试验来说满足了。
我还引入了一些PHP协助程序类以及我自己的数据库I / O和HTTP代码。
总归,运用的首要PHP构建块和源是:
Google自定义查找引擎– Ash Kiswany运用Jacob Fogg的 PHP界面编写了Google自定义查找的出色文章;
Mozscape API –如前所述,该用于在Github上拜访Moz的PHP实现是一个很好的起点。
网站搜寻器和HTTP –在Purple Toolz ,咱们有自己的搜寻器PurpleCerzBot ,它运用Curl作为HTTP和此简单HTML DOM解析器 ;
数据库I / O – PHP对MySQL具有出色的支撑,我将这些教程打包为类。
要知道的一个因素是 API调用之间的10秒距离 。 这是为了避免免费API用户过载。
运用SQL和R剖析数据
现在该看看咱们所拥有的。 有时这称为数据争用 。 我运用一种称为R的免费计算编程言语以及一种称为R Studio的开发环境(编辑器)。
R因为它是开源的,而且它具有许多第三方库,这使其非常通用而且适合此类作业。
现在,我有几个数据库表,其间包括我在SERPS的2页上的125个查找词查询的成果(即,每个查找词有20个排名的URL)。 两个数据库表保存Google成果,另一个表保存Moz数据成果。 要拜访这些数据库,咱们需求做一个数据库INNER JOIN,咱们能够经过将RMySQL软件包与R一起运用来轻松完结数据库。这是经过在R的操控台中键入“ install.packages('RMySQL')”来完结的,其间包括“库(RMySQL)”位于咱们R脚本顶部。
然后,咱们能够履行以下操作来衔接并将数据获取到名为“ theResults”的R数据帧变量中。
library(RMySQL)
# INNER JOIN the two tables
theQuery <- "
SELECT A.*, B.*, C.*
FROM
(
SELECT
cseq_search_id
FROM cse_query
) A -- Custom Search Query
INNER JOIN
(
SELECT
cser_cseq_id,
cser_rank,
cser_url
FROM cse_results
) B -- Custom Search Results
ON A.cseq_search_id=B.cser_cseq_id
INNER JOIN
(
SELECT *
FROM moz
) C -- Moz Data Fields
ON B.cser_url=C.moz_url
;
"
# [1] Connect to the database
# Replace USER_NAME with your database username
# Replace PASSWORD with your database password
# Replace MY_DB with your database name
theConn <- dbConnect(dbDriver("MySQL"), user="USER_NAME", password="PASSWORD", dbname="MY_DB")
# [2] Query the database and hold the results
theResults <- dbGetQuery(theConn, theQuery)
# [3] Disconnect from the database
dbDisconnect(theConn)
NOTE:留意:我有两个表来保存Google自定义查找引擎数据。 一种保存Google查询中的数据(cse_query),另一种保存成果(cse_results)。
现在咱们能够运用R的悉数计算功用开端争持。
让咱们从一些总结开端,以便对数据有所了解。 我经历的进程在每个字段中基本上都是相同的,因而让咱们阐明并运用Moz的“ UEID”字段(指向URL的外部所有者链接的数量)。 经过在RI中键入以下内容,能够得到以下内容:
> summary(theResults$moz_ueid)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0 1 20 14709 182 2755274
> quantile(theResults$moz_ueid, probs=c(1, 5, 10, 25, 50, 75, 80, 90, 95, 99, 100)/100)
1% 5% 10% 25% 50% 75% 80% 90% 95% 99% 100%
0.0 0.0 0.0 1.0 20.0 182.0 337.2 1715.2 7873.4 412283.4 2755274.0
观察这一点,您会发现数据因为中位数与均值的联系而偏斜(很大),而中位数与均值之间的联系被较高四分位数规模内的值(超过观测值的75%的值)拉动。 可是,咱们能够将其制作成R中的箱形图,其间每个X值都是从Google自定义查找方位1-20开端按等级摆放的UEID散布。
请留意,咱们在y轴上运用了对数刻度,以便咱们能够显现改变规模很大的所有值!
运用Google查找与某敞开 API东西结合做免费SEO剖析
由Google排名得出的 UEID R中的箱须图(注:对数刻度)
箱形图和晶须图很棒,因为它们在其间显现了很多信息(请拜见R中的geom_boxplot函数)。 紫色方框区域表示四分位距离(IQR),它是观测值的25%到75%之间的值。 每个“方框”中的水平线代表中间值(订购时中间的那一条),而从方框延伸的线(称为“晶须”)代表1.5x IQR。 晶须外的点称为“异常值”,并显现每个等级的观察值集的规模。 尽管有对数刻度,但咱们能够看到中值从排名10上升到排名1显着,表明股权链接的数量或许是Google的排名因素。 让咱们用密度图进一步探究它。
密度图非常相似于散布(直方图),但显现的是平滑线而不是条形图。 与直方图非常相似,密度图的峰值显现了数据值会集的方位,能够在比较两个散布时供给协助。 在下面的密度图中,我将数据分为两类:(i)排名1-10的SERP第1页上显现的成果为粉红色;以及 (ii)在SERP第2页上显现的成果为蓝色。 我还制作了两种散布的中位数,以协助阐明Page 1和Page 2之间的成果差异。
运用Google查找与某敞开 API东西结合做免费SEO剖析
从这两个密度图得出的结论是,第1页SERP成果比第2页成果具有更多的外部股权反向链接(UEID)。 您还能够在下面看到这两个类别的中值,清楚地显现了第1页(38)的值远大于第2页(11)的值。 因而,咱们现在有一些数字可用于反向链接的SEO战略。
# Create a factor in R according to which SERP page a result (cser_rank) is on
> theResults$rankBin <- paste("Page", ceiling(theResults$cser_rank / 10))
> theResults$rankBin <- factor(theResults$rankBin)
# Now report the medians by SERP page by calling ‘tapply’
> tapply(theResults$moz_ueid, theResults$rankBin, median)
Page 1 Page 2
38 11
由此,咱们能够推断出股权反向链接(UEID)很重要,假如我根据此数据为客户供给主张,我想说他们应该寻求38个以上根据股权的反向链接,以协助他们进入SERP的第1页。 当然,这是一个有限的样本,需求更多的研讨,需求考虑更大的样本和其他排名因素,可是您能够了解。
现在,让咱们研讨另一个比UEID规模更小的度量标准,并检查的UPA度量标准,即页面在查找引擎成果中排名杰出的或许性。
> summary(theResults$moz_upa)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 33.00 41.00 41.22 50.00 81.00
> quantile(theResults$moz_upa, probs=c(1, 5, 10, 25, 50, 75, 80, 90, 95, 99, 100)/100)
1% 5% 10% 25% 50% 75% 80% 90% 95% 99% 100%
12 20 25 33 41 50 53 58 62 75 81
UPA是供给给URL的数字,规模为0-100。 数据的表现比之前的UEID无界变量的均值和中位数靠得很近,表现出更好的“正态”散布,正如咱们经过在R中制作直方图所见的那样。
运用Google查找与某敞开 API东西结合做免费SEO剖析
莫兹的UPA得分的直方图
咱们将像以前相同履行第1页:第2页的割裂和密度图,并在将UPA数据分为两组时检查UPA分数散布。
运用Google查找与某敞开 API东西结合做免费SEO剖析
# Report the medians by SERP page by calling ‘tapply’
> tapply(theResults$moz_upa, theResults$rankBin, median)
Page 1 Page 2
43 39
总归,来自两个 API变量的两个散布非常不同。 可是两者都显现出SERP页面之间分数的差异,而且为您供给了实在的价值(中位数),能够与您合作并最终为客户供给关于您自己的SEO或申请SEO的主张。
当然,这仅仅一个小样本,不应从字面上了解。 可是,借助Google和xxx的免费资源,您现在能够看到怎么开端开发自己的剖析功用,以使假定根据而不是接受规范。 SEO排名因素一直在改变,拥有自己的剖析东西来进行自己的测验和试验将协助您提高信誉,甚至或许对迄今未知的事物供给独特的见地。
来源:莫然博客,欢迎分享本文!