从谷歌搜索刮取商业列表内容

时间:2015-07-29 17:23:07

标签: php jquery ajax web-services api

我正在开发一个简单的PHP应用程序 商家名称商家地址商务电话来自用户,然后检查该商家是否列在Google中

还会将Google返回的商家名称,地址和电话与搜索字词进行比较。

结果我想显示Google中的信息是否准确,或者某些内容是否有所不同或缺失。与this site类似的东西

我尝试了什么:

我曾尝试使用phpQuery库抓取页面,但它不包含该部分(在下面的图片中圈出来)。

$buss_name = $_GET['business_name'];

$link = "https://www.google.com/search?q=" . urlencode($buss_name) . "&rct=j";

$resp_html = file_get_contents($link, false);
$resp_html = phpQuery::newDocumentHTML($resp_html);
echo $resp_html;
echo pq("div.kno-ecr-pt.kno-fb-ctx._hdf",$resp_html)->text();

原因是它是通过某种AJAX调用加载的。

我也通过谷歌尝试了这个网络服务

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=don%20jayne%20&%20assoc

但这也不包括我要求的部分。

长话短说>>> 请告诉我,是否有任何API可用于检查Google上列出的商家?

enter image description here

1 个答案:

答案 0 :(得分:1)

可能你不再需要这个了,但我会回复你的帖子,以备将来参考。

检查商家是否在Google上的方法之一是检查google places api(documentation)。您可以执行搜索,然后检查您要查找的业务的结果。像这样:

$params = array(
          'query' => 'mindseo',
          'key' => "XXXXXXXXXXXXXXXXXXX");
$service_url = 'https://maps.googleapis.com/maps/api/place/textsearch/json';

//do the request
$placesSearch = request( $service_url, $params );

//print the result
print_r($placesSearch); 

//loop the results 
if ( count( $placesSearch['results'] ) >= 1 ) {
  $params = array(
          'placeid' => $placesSearch['results'][0]['place_id'],
          'key' => "AIzaSyAc73-uGCLLIuN3Bb2idOwRbLBzoaTmPHI");

  $service_url = 'https://maps.googleapis.com/maps/api/place/details/json';
  $placeData = request( $service_url, $params  );

  //echo the place data
  echo '//Place ID#'.$params['placeid'].' DATA -----------------------';
  print_r($placeData);
}

//function to make the request
function request( $googleApiUrl, $params) {
  $dataOut = array();

  $url = $googleApiUrl . '?' . http_build_query($params);

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

  $dataOut = json_decode(curl_exec($ch), true);

  curl_close($ch);    
  return $dataOut;
}