问题描述
我想从一些DATAS的谷歌网站管理员工具(GWT),我已搜查了一些API文档和农具的,但他们在返回几只能从GWT的DATAS的。
的 我需要:的
需要得到来自GWT,
以下的DATAS(1)。 TOP_PAGES
(2)。 TOP_QUERIES
(3)。 CRAWL_ERRORS
(4)。 CONTENT_ERRORS
(5)。 CONTENT_KEYWORDS
(6)。 INTERNAL_LINKS
(7)。 EXTERNAL_LINKS
(8)。 SOCIAL_ACTIVITY
得到这些DATAS后,我需要生成为他们每个人的Excel文件。
实现:的
我有从上面几个DATAS并生成到Excel的file.such为,
(1)。 TOP_PAGES
(2)。 TOP_QUERIES
(3)。 INTERNAL_LINKS
(4)。 EXTERNAL_LINKS
(5)。 CONTENT_KEYWORDS
没有实现:的
我依然没有得到大部分/ DATAS一样,
(1)。 CRAWL_ERRORS
(2)。 CONTENT_ERRORS
(3)。 SOCIAL_ACTIVITY
code样品供您参考:的
我用PHP中的两个文件这个GWT API,
的 文件#1:的(gwdata.php)
< PHP
/ **
*从谷歌网站管理员工具下载CSV文件的PHP类。
*
*本类不需要在Zend GDATA包进行安装
*才能运行。
*
*版权所有2012 eyecatchUp UG。版权所有。
*
*在Apache许可,2.0版(以下简称许可证);
*您不能使用这个文件除了在遵守许可。
*您可以在获得许可证的副本
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*除非适用法律要求或书面同意,软件
*许可下发布的分布在原样的基础,
*无担保或任何形式的条件,无论是前preSS或暗示的保证。
*请参阅许可证的特定语言的管理权限和
*根据许可证的限制。
*
* @author:斯蒂芬·施米茨< [email protected]>
* @link:HTTPS://$c$c.google.com/p/php-webmaster-tools-downloads/
* / 类GWTdata
{
常量HOST =https://www.google.com;
常量SERVICEURI =/网站管理员/工具/; 公共$ _language,$ _tables,$ _daterange,$ _downloaded,$ _skipped;
私人$ _auth,$ _logged_in; 公共职能__construct()
{
$这个 - > _auth = FALSE;
$这个 - > _logged_in = FALSE;
$这个 - > _language =EN;
$这 - > _daterange =阵列(,);
$这 - > _tables =阵列(TOP_PAGES,TOP_QUERIES,
CRAWL_ERRORS,CONTENT_ERRORS,CONTENT_KEYWORDS,
INTERNAL_LINKS,EXTERNAL_LINKS,SOCIAL_ACTIVITY
);
$这个 - > _errTablesSort =阵列(0 =>中的HTTP
1 => 未找到,2 => 限制按robotsTxt
3 => 无法访问,4 => 超时,5 => 不跟随,
kAppErrorSoft-404=> soft404,网站地图=> 在站点地图
);
$这个 - > _errTablesType =阵列(0 =>中网页爬行错误
1 => 移动WML,XHTML的错误,2 => 移动cHTML功能的错误
3 => 移动运营商的错误,4 => 新闻抓取-错误
);
$这个 - > _downloaded =阵列();
$这个 - > _skipped =阵列();
} / **
*设置内容语言。
*
* @参数$ str中的字符串有效的ISO 639-1语言code,由谷歌支持。
* /
公共职能SetLanguage($ STR)
{
$这个 - > _language = $海峡;
} / **
*设置应该下载功能。
*
* @参数$改编阵列有效的数组值为:
*TOP_PAGES,TOP_QUERIES,CRAWL_ERRORS,CONTENT_ERRORS,
*CONTENT_KEYWORDS,INTERNAL_LINKS,EXTERNAL_LINKS,
*SOCIAL_ACTIVITY。
* /
公共职能SetTables($ ARR)
{
如果(is_array($ ARR)及和放大器;!空($ ARR)及和放大器;的sizeof($ ARR)< = 2){
$有效=阵列(TOP_PAGES,TOP_QUERIES,CRAWL_ERRORS,CONTENT_ERRORS,
CONTENT_KEYWORDS,INTERNAL_LINKS,EXTERNAL_LINKS,SOCIAL_ACTIVITY);
$这个 - > _tables =阵列();
为($ I = 0; $ I<的sizeof($ ARR); $ I ++){
如果(in_array($改编[$ I],$有效)){
array_push($这个 - > _tables,$改编[$ i]);
}其他{抛出新的异常(给出参数无效。); }
}
}其他{抛出新的异常(给出参数无效。); }
} / **
*设置为下载数据日期范围。
*
*包含两个ISO 8601格式的日期字符串@param $ ARR数组。
* /
公共职能SetDaterange($ ARR)
{
如果(is_array($改编)及&放大器;!空($改编)及&放大器;的sizeof($ ARR)== 2){
如果(自:: IsISO8601($改编[0])===真放;&安培;
自:: IsISO8601($改编[1])===真){
$这 - > _daterange =阵列(str_replace函数( - ,,$ ARR [0]),
str_replace函数( - ,,$ ARR [1]));
返回true;
}其他{抛出新的异常(给出参数无效。); }
}其他{抛出新的异常(给出参数无效。); }
} / **
*返回下载的文件名的数组。
*
*已写入到磁盘的文件名@返回数组。
* /
公共职能GetDownloadedFiles()
{
返回$这个 - > _downloaded;
} / **
*返回下载的文件名的数组。
*
*已写入到磁盘的文件名@返回数组。
* /
公共职能GetSkippedFiles()
{
返回$这个 - > _skipped;
} / **
*检查是否客户端已登录到自己的谷歌账户呢。
*
* @返回如果登录,如果不是假的,则返回true。
* /
私有函数IsLoggedIn()
{
返回$这个 - > _logged_in;
} / **
*尝试登录到指定的帐户谷歌。
*
* @参数$电子邮件字符串用户的谷歌电子邮件地址。
* @参数美元的谷歌帐户PWD字符串密码。
* @返回时,验证成功,则返回true,
*否则返回false。
* /
公共职能登录($电子邮件,$ PWD)
{
$ URL =自我:: HOST。 /帐号/ ClientLogin的;
$ postRequest =阵列(
ACCOUNTTYPE'=> HOSTED_OR_GOOGLE',
电子邮件=> $电子邮件,
'的passwd'=> $ PWD,
'服务'= GT; 网站地图
'源'=> 谷歌 - WMTdownloadscript-0.1-PHP
);
$ CH = curl_init();
curl_setopt($ CH,CURLOPT_URL,$网址);
curl_setopt($ CH,CURLOPT_RETURNTRANSFER,真正的);
curl_setopt($ CH,CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ CH,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ CH,CURLOPT_FOLLOWLOCATION,真正的);
curl_setopt($ CH,CURLOPT_POST,真正的);
curl_setopt($ CH,CURLOPT_POSTFIELDS,$ postRequest);
$输出= curl_exec($ CH);
$信息= curl_getinfo($ CH);
curl_close($ CH);
如果($信息['HTTP_ code'] == 200){
preg_match('/验证=(*)/。',$输出,$匹配);
如果(使用isset($匹配[1])){
$这个 - > _auth = $匹配[1];
$这个 - > _logged_in = TRUE;
返回true;
}其他{返回false; }
}其他{返回false; }
} / **
*认证的GET请求尝试。
*
* @参数$ URL字符串的URL的GET请求。
* @返回混合卷曲的结果作为字符串,
*或假(布尔)时,认证失败。
* /
公共职能的GetData($网址)
{
如果(自:: IsLoggedIn()===真){
$ URL =自我:: HOST。 $网址;
$头=阵列(授权:AUTH的GoogleLogin =$这个 - > _auth。
的GData-版本:2);
$ CH = curl_init();
curl_setopt($ CH,CURLOPT_URL,$网址);
curl_setopt($ CH,CURLOPT_RETURNTRANSFER,真正的);
curl_setopt($ CH,CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ CH,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ CH,CURLOPT_FOLLOWLOCATION,真正的);
curl_setopt($ CH,CURLOPT_ENCODING,真正的);
curl_setopt($ CH,CURLOPT_HTTPHEADER,$头);
$结果= curl_exec($ CH);
$信息= curl_getinfo($ CH);
curl_close($ CH);
返回($信息['HTTP_ code']!= 200)?假:$结果;
}其他{返回false; }
} / **
*获取来自谷歌网站管理员工具帐户所有可用的网站。
*
返回:混合阵列与GWT帐户注册的所有网站的网址,
*或假(布尔)如果请求失败。
* /
公共职能GetSites()
{
如果(自:: IsLoggedIn()===真){
$饲料=自::的GetData(自:: SERVICEURI供稿/网站/);
如果($喂!== FALSE){
$网站=阵列();
$ DOC =新的DOMDocument();
$ doc->的loadXML($饲料);
的foreach($ doc->的getElementsByTagName('进入')为$节点){
array_push($网站,
$&于节点GT;的getElementsByTagName('标题') - GT;项目(0) - >的nodeValue);
}
返回$场所;
}其他{返回false; }
}其他{返回false; }
} / **
*获取可用的网站上的下载链接
*从谷歌网站管理员工具帐户。
*
* @参数$ URL字符串网站URL登记在GWT。
* @返回混合阵列的钥匙TOP_PAGES和TOP_QUERIES,
*或假(布尔)时,认证失败。
* /
公共职能GetDownloadUrls($网址)
{
如果(自:: IsLoggedIn()===真){
。$ _url = sprintf的(自我:: SERVICEURI下载列表HL =%S&放大器; SITEURL =%s的
$这个 - > _language,
urlen code($网址));
$的downloadlist =自::的GetData($ _网址);
返回json_de code($的downloadlist,真正的);
}其他{返回false; }
} / **
*下载总数基于给定的URL中的文件。
*
* @参数$网站字符串网站URL的GWT帐户可用。
* @参数$ savepath字符串可选路径CSV保存(没有尾随斜线!)。
* /
公共函数DownloadCSV($站点,$ savepath =。)
{
如果(自:: IsLoggedIn()===真){
$ downloadUrls =自:: GetDownloadUrls($网站);
$文件名= parse_url($站点,PHP_URL_HOST)。 - 。日期(YMD-他的);
$表= $这个 - > _tables;
的foreach($表为$表){
如果($表==CRAWL_ERRORS){
自:: DownloadCSV_CrawlErrors($网站,$ savepath);
}
ELSEIF($表==CONTENT_ERRORS){
自:: DownloadCSV_XTRA($网站,$ savepath,
HTML的建议,\\),CONTENT_ERRORS,内容问题-DL);
}
ELSEIF($表==CONTENT_KEYWORDS){
自:: DownloadCSV_XTRA($网站,$ savepath,
关键词,\\),CONTENT_KEYWORDS,内容文字-DL);
}
ELSEIF($表==INTERNAL_LINKS){
自:: DownloadCSV_XTRA($网站,$ savepath,
内部链接,\\),INTERNAL_LINKS,内部链接-DL);
}
ELSEIF($表==EXTERNAL_LINKS){
自:: DownloadCSV_XTRA($网站,$ savepath,
外部链接域,\\),EXTERNAL_LINKS,外部链接域-DL);
}
ELSEIF($表==SOCIAL_ACTIVITY){
自:: DownloadCSV_XTRA($网站,$ savepath,
社会活动,X26,SOCIAL_ACTIVITY,社会活动-DL);
}
其他{
$ finalName =$ savepath / $表 - $ filename.csv
$ finalUrl = $ downloadUrls [$表。&放大器;道具= ALL&安培; DB =%S&放大器; DE =%S及更多=真正的;
$ finalUrl = sprintf的($ finalUrl,$这 - > _daterange [0],$这 - > _daterange [1]);
自::保存数据($ finalUrl,$ finalName);
}
}
}其他{返回false; }
} / **
*基于给定的URL下载非官方的下载。
*
* @参数$网站字符串网站URL的GWT帐户可用。
* @参数$ savepath字符串可选路径CSV保存(没有尾随斜线!)。
* /
公共函数DownloadCSV_XTRA($站点,$ savepath =。,$ tokenUri,$ tokenDelimiter,$文件名preFIX,$ dlUri)
{
如果(自:: IsLoggedIn()===真){
$ URI =自我:: SERVICEURI。 $ tokenUri。 HL =%S&放大器; SITEURL =%s的;
$ _uri = sprintf的($ URI,$这个 - > _language,$网站);
$令牌=自::为gettoken($ _ URI,$ tokenDelimiter);
$文件名= parse_url($站点,PHP_URL_HOST)。 - 。日期(YMD-他的);
$ finalName =$ savepath / $文件名prefix- $ filename.csv
$ URL =自我:: SERVICEURI。 $ dlUri。 HL =%S&放大器; SITEURL =%S&安培; security_token =%S&安培;道具= ALL&安培; DB =%S&放大器; DE =%S及更多=真正的;
$ _url = sprintf的($网址,$这个 - > _language,$网站,$令牌,$这个 - > _daterange [0],$这个 - > _daterange [1]);
自::保存数据($ _网址,$ finalName);
}其他{返回false; }
} / **
*下载总数基于给定的URL抓取错误文件。
*
* @参数$网站字符串网站URL的GWT帐户可用。
* @参数$ savepath字符串可选:路径CSV保存(没有尾随斜线!)。
* @参数$分开布尔可选:如果为true,方法保存分离的CSV文件
*每个错误类型。默认值:合并在一个文件中的错误。
* /
公共职能DownloadCSV_CrawlErrors($网站,$ savepath =,$分开= FALSE)
{
如果(自:: IsLoggedIn()===真){
$ TYPE_PARAM =我们;
$文件名= parse_url($站点,PHP_URL_HOST)。 - 。日期(YMD-他的);
如果($分开){
的foreach($这个 - > _errTablesSort为$ sortid => $ sortname){
的foreach($这个 - > _errTablesType为$ typeid的= GT; $类型名称){
如果($ typeid的== 1){
$ TYPE_PARAM =MX;
}否则如果($ typeid的== 2){
$ TYPE_PARAM =MC;
}其他{
$ TYPE_PARAM =我们;
}
$ URI =自我:: SERVICEURI爬行错误HL = EN&放大器; SITEURL = $网站和放大器; TID = $ TYPE_PARAM。
$令牌=自::为gettoken($ URI,X26);
$ finalName =$ savepath / CRAWL_ERRORS- $ typename- $ sortname- $ filename.csv
$ URL = self::SERVICEURI.\"crawl-errors-dl?hl=%s&siteUrl=%s&security_token=%s&type=%s&sort=%s\";
$ _url = sprintf的($网址,$这个 - > _language,$网站,$令牌,$ typeid的,$ sortid);
自::保存数据($ _网址,$ finalName);
}
}
}
其他{
$ URI =自我:: SERVICEURI爬行错误HL = EN&放大器; SITEURL = $网站和放大器; TID = $ TYPE_PARAM。
$令牌=自::为gettoken($ URI,X26);
$ finalName =$ savepath / CRAWL_ERRORS- $ filename.csv
。$ URL =自我:: SERVICEURI爬行-错误-DL HL =%S&放大器; SITEURL =%S&安培; security_token =%S&放大器;类型= 0;
$ _url = sprintf的($网址,$这个 - > _language,$网站,$令牌);
自::保存数据($ _网址,$ finalName);
}
}其他{返回false; }
} / **
*将数据保存到基于给定的URL的CSV文件。
*
* @参数$ finalUrl字符串CSV下载URI。
* @参数$ finalName字符串文件指针保存位置。
* /
私有函数保存数据($ finalUrl,$ finalName)
{
$数据=自::的GetData($ finalUrl);
如果(strlen的($数据)> 1安培;&放大器;的file_put_contents($ finalName,utf8_de code($数据))){
array_push($这个 - > _downloaded,真实路径($ finalName));
返回true;
}其他{
array_push($这个 - > _skipped,$ finalName);
返回false;
}
} / **
*定期防爆pression查找安全令牌的下载文件。
*
* @参数$ URI字符串网站管理员工具桌面服务URI。
* @参数$分隔字符串分隔尾随的正则表达式。
* @返回String返回一个安全令牌。
* /
私有函数为gettoken($ URI,$分隔符)
{
$匹配=阵列();
$ TMP =自::的GetData($ URI);
//$p$pg_match_all(\"#x26security_token(.*?)$delimiter#si,$ TMP,$匹配);
preg_match_all(?#46security_token(*):$分界#SI,$ TMP,$匹配);
//返回SUBSTR($比赛[1] [0],4,-1);
返回SUBSTR($比赛[1] [0],3,-1);
} / **
*验证ISO 8601的日期格式。
*
* @参数$ str中的字符串有效的ISO 8601日期字符串(如:2012-01-01)。
*如果字符串具有有效的格式,否则为假@return,则返回true。
* /
私有函数IsISO8601($ STR)
{
$邮票=的strtotime($海峡);
回报(is_numeric($盖章)及和放大器;了checkdate(日期('M',$盖章),
日期('D',$盖章),日期('Y',$邮票)))?真假;
}
}
?>
的 文件#2:的(的index.php)
< PHP
包括gwtdata.php';
包括credentials.php';
尝试{
$网站=http://www.yourdomain.com/; / *添加您的网站网址* /
$ GDATA =新GWTdata();
如果($ gdata->登录($电子邮件,$密码)===真)
{
$ gdata-> DownloadCSV($网站,在这里添加您的文件夹的保存路径CSV文件使用GWT数据);
回声的数据都是成功下载;
}
}赶上(例外$ E){
死亡($ E-GT&;的getMessage());
}
?>
谁能帮我在这,要实现所有这些DATAS并使其为excel文件使用PHP来生成。
I am the author of the code that you quote (GWTdata PHP class) and first off want to make clear that this code is neither released by Google nor makes use of an official API, but is rather a custom script processing data from the web interface.
A couple of weeks ago, there were some changes to the Google Webmaster Tools web interface (which, again, was/is used to process data requests). Thus, it broke some functionality of the PHP class GWTdata - such as downloading the crawl errors.
Unfortunately, for the most data there is nothing I/we can do about it (since the data is just not accessable any longer).
Anyway, you can use this followup project to get the crawl errors.
GwtCrawlErrors (Download website crawl errors from Google Webmaster Tools as CSV):
https://github.com/eyecatchup/GWT_CrawlErrors-php
这篇关于是否有任何可能使用PHP来获得谷歌网站管理员工具(GWT)DATAS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!