javascript - 访问 SEMrush api 响应数据

标签 javascript php json

我正在使用 SEMrush api,我在从他们的 api 的响应中提取数据时遇到了一些问题,因为它不遵循标准的“key:value”JSON 格式。在下面的示例中,所有键和值都显示在各自的行中。

请求示例:

http://api.semrush.com/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&type=domain_ranks&export_columns=Db,Dn,Rk,Or,Ot,Oc,Ad,At,Ac&domain=seobook.com&database=us

响应:

Database;Domain;Rank;Organic Keywords;Organic Traffic;Organic Cost;Adwords Keywords;Adwords Traffic;Adwords Cost
us;seobook.com;24041;5249;37332;143496;0;0;0

我在 JavaScript 中使用此方法收效甚微:

function get_sem(){
var results = document.getElementById("sem-test");
var hr = new XMLHttpRequest();
hr.open("GET", "sem-test.php", true);
hr.setRequestHeader("Content-type", "application/json");
hr.onreadystatechange = function() {
  if(hr.readyState == 4 && hr.status == 200) {
    var data = JSON.parse(hr.responseText);
    results.innerHTML = data.rank;
  }
}

hr.send(null);
results.innerHTML = "Requesting...";
}

get_sem();

我怎样才能准确定位这些值?

来源: http://www.semrush.com/api-analytics/

最佳答案

是的,SEMrush 响应的格式真的很奇怪。我如何在我的一项任务中实现它。 PHP 端(例如,我需要 Organic Traffic):

E.g. response is "Rank;Organic Keywords;Organic Traffic;Organic Cost;Adwords Keywords;Adwords Traffic;Adwords Cost 114787;2173;1400;338;37;1645;634"

// split names & values
list($names,$values) = preg_split("/[\s,][\d]/",$response);// <= set here your regex according your response 
$names = str_replace(' ','_',trim($names)); 
$names = explode(';',$names);
$values = explode(';',$values);
$SEMrush_data = array_combine($names,$values);   
echo $SEMrush_data['Organic_Traffic]; // 1400
var_dump($SEMrush_data);
// OUTPUT 
array(7) {
   ["Rank"]=>
   string(5) "14787"
   ["Organic_Keywords"]=>
   string(4) "2173"
   ["Organic_Traffic"]=>
   string(4) "1400"
   ["Organic_Cost"]=>
   string(3) "338"
   ["Adwords_Keywords"]=>
   string(2) "37"
   ["Adwords_Traffic"]=>
   string(4) "1645"
   ["Adwords_Cost"]=>
   string(3) "634"
}  

关于javascript - 访问 SEMrush api 响应数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32237596/

相关文章:

javascript - 可以在本地站点上强制使用 cookie 吗?

php - WordPress 查询

php - 如何为正确的 PHP 开发配置 emacs?

php - Running a PHP script from within Python - 将值从 Python 传递到 PHP

javascript - Redux 中间件是如何实现多任务的?

javascript - 我在代码中添加了 10 个函数,我什至没有调用其中任何一个,但代码停止工作了!

javascript - 使用js数组作为栈

javascript - 如何使用 JavaScript 将 JSON 字符串中的键和值添加到 innerHTML 中

json - LWP::UserAgent 中的 PAR::Packer 和 HTTPS

php - 将用户数据存储在服务器上的 JSON 文件中