我有一个要求,我必须在谷歌上反向查找图像,并提取印在“最佳猜测此图像:”标题上的名称.
不,我对网上现有的卷曲代码进行了一些修改,并且到目前为止:
不,我对网上现有的卷曲代码进行了一些修改,并且到目前为止:
<?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 举报,一经查实,本站将立刻删除。