加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:19:22 所属栏目:PHP教程 来源:网络整理
导读:我有一个要求,我必须在谷歌上反向查找图像,并提取印在“最佳猜测此图像:”标题上的名称. 不,我对网上现有的卷曲代码进行了一些修改,并且到目前为止: ?phpfunction fetch_google($terms="sample search",$numpages=1,$user_agent='Mozilla/5.0 (Windows NT
我有一个要求,我必须在谷歌上反向查找图像,并提取印在“最佳猜测此图像:”标题上的名称.
不,我对网上现有的卷曲代码进行了一些修改,并且到目前为止:

<?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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读