我之前看別人使用QQ機器人的時候,有一個站長工具插件,但是收費,應該是對接的API,本來我想寫的,但是寫了一半(只寫了API部分)發現沒什么用,而且百度的經常要驗證。我寫了百度、bing、搜狗、Google、雅虎這5個的接口。
返回效果如圖:
![圖片[1]-百度、必應、搜狗、谷歌、雅虎的集合查詢API](http://www.zzgyrme.cn/wp-content/uploads/2023/01/e690b24c54125700-1024x448.jpg)
百度、bing、搜狗的API代碼:
<?php
/*
Plugin Name: XY-百度收錄量
Description: XY-根據域名返回百度收錄量
*/
$domain = (isset($_GET['domain']))?$_GET['domain']:$_POST['domain'];
if(empty($domain)) echo '查詢域名不能為空';
$baiducount = baiduSL ($domain);
$bingcount = bingSL ($domain);
$sogoucount = sogouSL($domain);
$googleyahoodata = file_get_contents("http://www.c4r.cn/sl.php?domain=".$domain);
$googleyahoojson = json_decode($googleyahoodata);
$googlecount = $googleyahoojson -> google;
$yahoocount = $googleyahoojson -> yahoo;
if(!isset($bingcount)) $bingcount = "查詢失敗";
if(!$bingcount) $bingcount = 0;
if(!isset($baiducount)) $baiducount = "查詢失敗";
if(!$baiducount) $baiducount = 0;
if(!isset($googlecount)) $googlecount = "查詢失敗";
if(!$googlecount) $googlecount = 0;
if(!isset($yahoocount)) $yahoocount = "查詢失敗";
if(!$yahoocount) $yahoocount = 0;
$result=array(
'code'=>1,
'domain'=>$domain,
'data'=>array(
'baidu'=>$baiducount,
'bing'=>$bingcount,
'google'=>$googlecount,
'yahoo'=>$yahoocount,
'sogou'=>$sogoucount,
)
);
print_r(json_encode($result));
unset($domain,$result,$ch);
function sogouSL ($domain) {
$sogou='http://www.sogou.com/web?query=site%3A'.$domain;
$sogousite=curl($sogou);
$sogousite = str_replace(array("\r\n", "\r", "\n", ' '), '', $sogousite);
if (!@$count) preg_match('/<p class="sr-num">找到約(.*?)條結果/i',$sogousite,$count);
$sogouSL=@strip_tags($count[1]);
unset($count);
return $sogouSL;
}
function baiduSL ($domain) {
$baidu='https://www.baidu.com/s?ie=utf-8&tn=baidu&wd=site%3A'.$domain;
$bdsite=curl($baidu);
$bdsite = str_replace(array("\r\n", "\r", "\n", ' '), '', $bdsite);
if (!@$count) preg_match('/找到相關結果數約(.*?)個/i',$bdsite,$count);
$baiduSL=@strip_tags($count[1]);
unset($count);
return $baiduSL;
}
function bingSL ($domain) {
$bing='https://cn.bing.com/search?q=site%3A'.$domain;
$bingsite=curl($bing);
$bingsite = str_replace(array("\r\n", "\r", "\n", ' '), '', $bingsite);
if (!@$count) preg_match('/<span class="sb_count">(.*?) 條結果/i',$bingsite,$count);
$bingSL=@strip_tags($count[1]);
unset($count);
return $bingSL;
}
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
?>
Google、雅虎的API代碼:
<?php
$domain = (isset($_GET['domain']))?$_GET['domain']:$_POST['domain'];
$yahoocount = yahooSL ($domain);
$googlecount = googleSL ($domain);
$result=array(
'yahoo'=>$yahoocount,
'google'=>$googlecount
);
print_r(json_encode($result));
function yahooSL ($domain) {
$yahoo='https://hk.search.yahoo.com/search;?p=site%3A'.$domain;
$yahoosite=curl($yahoo);
$bingsite = str_replace(array("\r\n", "\r", "\n", ' '), '', $yahoosite);
if (!@$count) preg_match('/大約 (.*?) 個搜尋結果/i',$yahoosite,$count);
$yahooSL=@strip_tags($count[1]);
unset($count);
return $yahooSL;
}
function googleSL ($domain) {
$google='https://www.google.com/search?q=site%3A'.$domain;
$googlesite=curl($google);
$googlesite = str_replace(array("\r\n", "\r", "\n", ' '), '', $googlesite);
if (!@$count) preg_match('/約 (.*?) 項搜尋結果/i',$googlesite,$count);
$googleSL=@strip_tags($count[1]);
unset($count);
return $googleSL;
}
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
至于為什么要分開寫,那是因為我服務器國內的,Google、雅虎需要轉接一下。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
本站所有資源均為作者提供和網友推薦收集整理而來,僅供學習和研究使用,請在下載后24小時內刪除。
如果有侵權之處請第一時間聯系我們E-mail:630092965@qq.com刪除。敬請諒解!
THE END
暫無評論內容