在PHP脚本中检查Google搜索的结果数

时间:2019-04-03 14:21:43

标签: php search google-api google-search phrase

是否可以使用Google API检查PHP脚本中某个短语的Google搜索结果数量?我很好奇是否可以做到。如果是,该怎么办?

编辑

好的,根据drakin8564的建议,这是我的职责:

function google(String $text) {

        // create curl resource 
        $ch = curl_init(); 

        // set url 
        curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/search?q="'.$text.'"'); 

        //return the transfer as a string 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

        libxml_disable_entity_loader(false);
        // $output contains the output string 
        $output = curl_exec($ch); 

        $xml = new DOMDocument();

        $xml->loadHTMLFile($output);

        $string = $xml->getElementById('resultStats');

        $string = str_replace('Około ', '', $string); 
        $string = str_replace(',', '', $string);
        $results = intval($string);

        if($results>0) {

            curl_close($ch);            
            return true; 
        } else {
        curl_close($ch);     
        return false;
        // close curl resource to free up system resources 
        } 
        } 

注意:“Około”在波兰语中的意思是“关于”,另外我有一个警告:

Warning: DOMDocument::loadHTMLFile(): I/O warning : failed to load external entity "<!doctype html><html itemscope="" itemtype="http://schema.org/SearchResultsPage" lang="pl"><head><meta content="text/ in C:\xampp2\htdocs\file.php on line 19

这是一个实现

if(google("flower") == true){
            echo "search results exist";

        } else {
            echo "results don't exist";
        }

if(google("7dsa8dsaza") == true){
            echo "search results exist";

        } else {
            echo "results don't exist";
        }

不幸的是,这是一个问题,因为两个示例都导致“搜索结果存在”输出,而“ 7dsa8dsaza”的结果不存在。如何解决?

1 个答案:

答案 0 :(得分:0)

我不知道使用Google API的方法,但是您可以使用https://www.google.com/search?q= {your + search + words}

您应该能够使用DomDocument将html放入对象中。估计的结果数量在id为“ =“ resultStats”的div中

使用php curl函数的示例: PHP cURL Docs

DomDocuments文档,在“注释”部分提供了一些示例: PHP DomDocument Docs

编辑:仅从resultStats元素中获取数字的示例:

$string = "About 214,000,000 results (0.41 seconds)"; 
$string = str_replace('About ', '', $string); 
$string = str_replace(',', '', $string);
$results = intval($string);