利用Google搜索与某开放 API工具结合做免费SEO分析

seo分析师的头衔,就是寻找大量免费数据来源,并将其整理成有见地的东西。 为什么? 因为将客户的建议基于猜想没有任何价值。 最好将高质量的数据与良好的分析相结合,以帮助我

seo分析师的头衔,就是寻找大量免费数据来源,并将其整理成有见地的东西。 为什么? 因为将客户的建议基于猜想没有任何价值。 最好将高质量的数据良好的分析相结合,以帮助我们的客户更好地了解对他们而言重要的方面。

在本文中,我将告诉您如何开始使用一些免费资源,并说明如何组合独特的分析方法,这些方法可以为您的博客文章提供有用的见解(如果您是作家,则是代理机构,如果您是SEO,或者您的网站(如果您是自己进行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=<google_api_id>&userIp=
 <ip_address>&cx <custom_search_engine_id>&q = iphone + X&cr = countryUS&start =
 1 </ custom_search_engine_id> </ ip_address> </ google_api_id> 

哪里:

  • https://www.google.com/cn/customsearch/v1 –是Google自定义搜索API的网址
  • key = <GOOGLE_API_ID> –您的Google Developer API密钥
  • userIp = <IP_ADDRESS> –计算机的IP地址
  • cx = <CUSTOM_SEARCH_ENGINE_ID> –您的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并分析以下指标 :

在调用Links API之前,将xxx API代码添加在一起,如下所示:

 www.Apple.com%2F?Cols = 103616137253&AccessID = xxx_ACCESS_ID&
过期= 1560586149&Signature = <xxx_SECRET_KEY> 

结果:

  • 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= <xxx_SECRET_KEY> – 访问ID的编码版本(在您的API帐户中找到)

将返回类似以下JSON的内容:

 数组
 (
 [ut] =>apple
 [uu] => <a href="http://www.apple.com/" class="redactor-autoparser-object"> www.apple.com/ </a>
 [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排名得出的 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之间的结果差异。

从这两个密度图得出的结论是,第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中绘制直方图所见的那样。

莫兹的UPA得分的直方图

我们将像以前一样执行第1页:第2页的分裂和密度图,并在将UPA数据分为两组时查看UPA分数分布。

 # 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排名因素一直在变化,拥有自己的分析工具来进行自己的测试和实验将帮助您提高信誉,甚至可能对迄今未知的事物提供独特的见解。

(文:Jason Morphett | 英国电信(BT)的分析师和数据可视化研究人员)

版权声明:(利用Google搜索与某开放 API工具结合做免费SEO分析)由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件标题或链接至 service#hao123w.com ,本站将立刻删除。
(0)
上一篇 2020年6月26日 上午6:11
下一篇 2020年6月26日 上午6:20
hao123w, hao123生活号 - 让生活更简单!,更多信息请访问 http://www.hao123w.com/