作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 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();
我怎样才能准确定位这些值?
最佳答案
是的,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/
我正在使用 SEMrush api,我在从他们的 api 的响应中提取数据时遇到了一些问题,因为它不遵循标准的“key:value”JSON 格式。在下面的示例中,所有键和值都显示在各自的行中。 请求
我正在使用 semrush 来获取网站分析的响应。我收到的是 CSV 类型的数据,在查看文档后,我无法获得可以从 SEMRUSH 获得 json 响应的因素 这是代码和相应的响应: >>> data
我是一名优秀的程序员,十分优秀!