4

独自のキーワード難易度ツールを開発しようとしているときに、Google クエリから結果の総数を取得するときに問題が発生しました。できるだけ明確にするために、取得しようとしている番号の画面を次に示します。ここに画像の説明を入力

Google カスタム検索 API でこれを行う方法の参照が見つからなかったので、小さなスクレーパーを作成しましたが、それが最善の方法ではないと感じています。これが私のコードです:

<?php
$url = "http://www.google.com/search?q=".$keyword;
$text = file_get_contents($url);
//get string between 2 strings function
function get_string_between($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}
//fetch the string between "About" and "results"
$res = get_string_between($text, "About", "results");
//keep only numeric characters
$res = preg_replace('/[^0-9]+/', '', $res);
?>

これを行うためのより良い方法を提案できますか? (できればGoogle APIを使用してください)

4

1 に答える 1

1

正規表現を使用します。

$params = array('q' => 'shark with lasers that shoot monkeys with balloons on skyscrapers please give me less results asdafasddfg');
$content = file_get_contents('http://www.google.com/search?' . http_build_query($params));
preg_match('/About (.*) results/i', $content, $matches);
echo !empty($matches[1]) ? $matches[1] : 0;
// output: 14,300

API に何も見つかりません。これは Google TOS に反することに注意してください。Bing の API は、結果のカウントを提供します。

于 2012-10-04T21:00:32.033 に答える