douzhi2988 2012-11-30 14:38
浏览 83
已采纳

使用GoogleAPI返回2个不同查询的搜索结果数。 (PHP)

I'm working on a small experiment for my Honours Project. What I'm trying to achieve is to compute the similarity between the amount of results returned, based on 2 Google search queries. When I have the 2 results, I wish to divide one by the other in order to return a 'ratio' of sorts.

Now, it's easy enough to return one result using the API, I've been using this code:

$query="CinammonRolls";
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$query";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$body = curl_exec($ch);
curl_close($ch);

$json = json_decode($body);

print 'The results for ' . $query . ' are: ' .  $json->responseData->cursor->estimatedResultCount;

That piece of code, returns the result fine. However I'm relatively new to PHP so the follow code, wasn't ever going to work; but I gave it a bash.

$query="CinammonRolls";
$query2="CinammonRollsChinese";
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$query";
$url2 = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$query2";

$ch = curl_init();

$ch2 = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 2);
$body = curl_exec($ch);
$body2 = curl_exec($ch2);
curl_close($ch);
curl_close($ch2);

$json = json_decode($body);
$json2 = json_decode($body2);
print 'The results for ' . $query . ' are: ' .  $json->responseData->cursor->estimatedResultCount;

print 'The results for ' . $query2 . ' are: ' . $json2->responseData->cursor->estimatedResultCount;

That just returns the error:

Notice: Undefined property: stdClass::$estimatedResultCount in C:\Program Files\EasyPHP-5.3.9\www\googleTest.php on line 24

So I emplore you all, is there a way to get round this? Would it be something like computing both the results in separate functions? I'm stumped.

Thanks for any help.

  • 写回答

3条回答 默认 最新

  • dongyun4010 2012-11-30 14:55
    关注

    I think you meant:

    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 2);
    

    to be:

    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
    

    The option is to be turned on and off based on the 3rd parameter which is boolean, so 0 or 1. I think when you copied and pasted the lines for the 2nd query and was changing 1 to 2 you accidentally changed the 1 boolean to 2 (non-boolean).

    "CinammonRollsChinese" returns NO RESULTS thus there is not estimated result count. You need to check to see if $json2->responseData->cursor->estimatedResultCount exists before doing anything with it since not every search string will yield results.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。