使用PHP从Google检索随机图片网址

最近的一个项目涉及到我从Web上获取随机图像并以某种特定方式使用它。 我选择使用PHP访问Google图片以获取随机图片网址。 该图像可以是通用图像,也可以与特定主题相关。

这是查询Google图片并返回图片网址的PHP函数:

function GetRandomImageURL($topic='', $min=0, $max=100)
{
  // get random image from Google
  if ($topic=='') $topic='image';
  $ofs=mt_rand($min, $max);
  $geturl='http://www.google.ca/images?q=' . $topic . '&start=' . $ofs . '&gbv=1';
  $data=file_get_contents($geturl); 
  $f1='<div id="center_col">';
  $f2='<a href="/imgres?imgurl=';
  $f3='&amp;imgrefurl='; 
  $pos1=strpos($data, $f1)+strlen($f1);
  if ($pos1==FALSE) return FALSE;
  $pos2=strpos($data, $f2, $pos1)+strlen($f2);
  if ($pos2==FALSE) return FALSE;
  $pos3=strpos($data, $f3, $pos2);
  if ($pos3==FALSE) return FALSE;
  return substr($data, $pos2, $pos3-$pos2);
} 
此函数生成一个随机数,将其作为带有图像查询的“开始”参数发送给Google,并获取生成的HTML代码。 参数“ gbv = 1”是必需的-如果没有该参数,Google将返回通用页面而不是图像结果。

如果找不到任何标记($ f1,$ f2或$ f3),该函数将返回FALSE。 否则,将解析第一个图像(来自“ start”参数),并检索相应的URL。

请注意,Google可能会在此过程中更改其HTML,从而使此功能过时。 另外,较大的“开始”值似乎超出了Google愿意显示的图像数量。 在撰写本文时,最大值约为980。

$ topic参数允许您指定某种图像类型。 通过“车辆”,以车辆图像为目标; 通过“气球”,..好吧,你明白了。 请注意,这不能保证专注于某个主题,因为有人可能发布了带有“气球”作为图像标签的图片,但该图片中没有任何气球。

尽管可以使用任何随机化函数,但由于速度和合理的随机性,此处使用mt_rand()。

此示例函数演示了上面的GetRandomImageURL()函数的用法:

function ShowRandomImage($topic='')
{
  echo('<table border="1"><tr><td>');
  $url=GetRandomImageURL($topic);
  if ($url==FALSE) echo('Error while searching');
  else {
    echo(htmlentities($url) . '<br />');
    echo('<img width="640" src="' . $url . '" />');
  }
  echo('</td></tr></table>');
} 
ShowRandomImage();
ShowRandomImage('rothschild'); 
请享用!

From: https://bytes.com/topic/php/insights/911682-retrieve-random-image-url-google-php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值