【发布时间】:2011-06-16 01:02:31
【问题描述】:
我想用 Google 搜索提供的结果列表来补充我的网络服务。我的目标是通过指定一些关键字和一些其他信息(例如数据范围)来接收前 10-20 个结果。
我有什么可能性?这甚至只能通过使用像Javascript这样的客户端技术来实现吗?还是我最终必须依赖动态加载的 PHP 脚本,该脚本使用 cURL 加载和分析 HTML 代码?
【问题讨论】:
标签: javascript php search
我想用 Google 搜索提供的结果列表来补充我的网络服务。我的目标是通过指定一些关键字和一些其他信息(例如数据范围)来接收前 10-20 个结果。
我有什么可能性?这甚至只能通过使用像Javascript这样的客户端技术来实现吗?还是我最终必须依赖动态加载的 PHP 脚本,该脚本使用 cURL 加载和分析 HTML 代码?
【问题讨论】:
标签: javascript php search
这就是我过去使用 cURL 请求和 Google AJAX API 的方式:
function getResults($term,$page = 0){
$googleurl = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".(str_replace(' ','+',$term);
if($page >0){
$googleurl .= "&start=".($page*10);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$googleurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$Page_Contents = curl_exec($ch);
curl_close($ch);
return $Page_Contents;
}
$keywordCheck = array('ajax','php','cURL','other search terms');
foreach($keywordCheck as $wordKey => $wordValue){
$term = str_replace(' ','+',$wordValue);
for($i =0; $i < 5; $i++){
$page = getResults($term,$i);
if(preg_match("/mysite.com/",$page)){
$links = explode('GsearchResultClass',$page);
foreach ($links as $key => $value){
if(preg_match("/mysite.com/",$value)){
preg_match("/url\":\"([^\"]*)\",/",$value,$match);
$match = str_replace('",','',str_replace('url":"','',$match[0]));
$results[$wordValue] .= $wordValue. ' is ranked #'.(($i*10)+($key)).': '.$match.'<br/>';
}
}
}
}
sleep(2);
}
然后在页面正文中:
<div id="results">
<?php foreach($results as $key => $value){
if($value == ''){
echo '<p>'.$key.' not found in top 50 results</p>';
}
else{
echo '<p>'.$value.'</p>';
}
}?>
</div>
需要理解的几点:
1) 使用 sleep() 在查询之间暂停以避免因服务器负担过重而被禁止
2) 上次我检查时,搜索 api 将您限制为每天 1000 次查询,因此请做好相应计划
3) API 查询与 www.google.com 不同的数据库,因此结果可能与您进行正常搜索时看到的略有不同
此脚本仅检查我的网址在某些关键字上的位置我想监控前 50 个结果中的位置...显然,如果您不专注于 1 个站点,则需要进行调整.. .
要添加自定义过滤器,只需执行“高级”搜索并查看查询字符串,API 也是如此。只需根据需要附加,例如 2011 年 1 月 1 日 - 2011 年 1 月 24 日的日期范围:
$googleurl .= '&tbs=cdr%3A1%2Ccd_min%3A1%2F4%2F2011%2Ccd_max%3A1%2F24%2F2011';
【讨论】:
您想查看他们的JSON search API(这是他们更大的custom search API 的一部分)。该页面上的示例是用 javascript 编写的,但您也可以轻松地在 php 中实现它。
【讨论】: