微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php提取对谷歌图像搜索的图像结果的最佳猜测?

我有一个要求,我必须在谷歌上反向查找图像,并提取印在“最佳猜测此图像:”标题上的名称.
不,我对网上现有的卷曲代码进行了一些修改,并且到目前为止:

<?PHP

function fetch_google($terms="sample search",$numpages=1,$user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0')  
{
    $searched="";
    for($i=0;$i<=$numpages;$i++)
    {
        $ch = curl_init();
        $url="http://www.google.com/searchbyimage?hl=en&image_url=".urlencode($terms);
        curl_setopt ($ch,CURLOPT_URL,$url);
        curl_setopt ($ch,CURLOPT_USERAGENT,$user_agent);
        curl_setopt ($ch,CURLOPT_HEADER,0);
        curl_setopt ($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt ($ch,CURLOPT_RETURNTRANSFER,CURLOPT_REFERER,'http://www.google.com/');
        curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT,120);
        curl_setopt ($ch,CURLOPT_TIMEOUT,CURLOPT_MAXREDirs,10);
        curl_setopt ($ch,CURLOPT_COOKIEFILE,"cookie.txt");
        curl_setopt ($ch,CURLOPT_COOKIEJAR,"cookie.txt");
        $searched=$searched.curl_exec ($ch);
        curl_close ($ch);
    }

    $xml = new DOMDocument();
    @$xml->loadHTML($searched);
    foreach($xml->getElementsByTagName('div') as $div)
    {
        if(strpos($div->nodeValue,"Best guess for this image:"))
            return $div->nodeValue;
    } 
}

$content = fetch_google("http://media.il.edmunds-media.com/aston-martin/as/03/de/aston-martin_front_03-de-as_1_276.jpg",1);
echo $content."<br>";

?>

但它给了我很多文字,我无法得到它的确切div.
由于’a’没有类属性,我不得不这样做.

请帮忙!

解决方法

你可以改用preg_match.

当您从CURL获取HTML时,您可以使用Regex来匹配文本:

function fetch_google($terms="sample search","cookie.txt");
        $searched=$searched.curl_exec ($ch);
        curl_close ($ch);
    }

    $matches = array();
    preg_match('/Best guess for this image:[^<]+<a[^>]+>([^<]+)/',$searched,$matches);
    return (count($matches) > 1 ? $matches[1] : false);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐