远程采集接口图片案例

刚才逛小诗梦博客的时候看到他发布了一个随机图的接口,访问了一下,哇,全是小姐姐,所以果断采集了,顺便把采集源码发出来,让他们的图变成自己的图(/大笑)

<?php

header('Content-type: application/json');

//图片接口地址(这里又要拿小诗梦开刀了)
$url = 'https://cdn.mom1.cn/?mom=302';
// 图片存放文件夹
$path = 'images/';
//获取图片真实地址
$url = imgget($url);
//获取文件名
$filenames = basename($url);

$file_c = $path.$filenames;

if(file_exists($file_c)){
  //文件已经存在
  echo json_encode(array('url'=>$url,'filename'=>$filenames,'state'=>'202'));
}else{
  if(download($url,$path)){
    //采集成功
    echo json_encode(array('url'=>$url,'filename'=>$filenames,'state'=>'200'));
  }else{
    //采集失败
    echo json_encode(array('url'=>$url,'filename'=>$filenames,'state'=>'201'));
  }

}


function imgget($url){
  // 获取图片真实地址
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_VERBOSE, true);
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLOPT_NOBODY, true);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  // 下面两行为不验证证书和 HOST,建议在此前判断 URL 是否是 HTTPS
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  // $ret 返回跳转信息
  $ret = curl_exec($ch);
  // $info 以 array 形式返回跳转信息
  $info = curl_getinfo($ch);

  // 记得关闭curl
  curl_close($ch);
  // 跳转后的 URL 信息
  return $info['url'];
}

function download($url, $path = 'images/')
{
  //远程下载保存
  if (! file_exists ( $path )) {
    mkdir ( "$path", 0777, true );
  }
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  $file = curl_exec($ch);
  curl_close($ch);
  $filename = pathinfo($url, PATHINFO_BASENAME);
  $resource = fopen($path . $filename, 'a');
  fwrite($resource, $file);
  fclose($resource);
  return true;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python与爬虫

爬虫入门到精通-环境的搭建

本文章属于爬虫入门到精通系统教程第三讲 IDE的安装 IDE我用的是VS code,也用过pycharm(但是电脑配置不行,比较卡) VScode安装教程...

4887
来自专栏张善友的专栏

Windows安装和使用zookeeper

之前整理过一篇文章《zookeeper 分布式锁服务》,本文介绍的 Zookeeper 是以 3.4.5 这个稳定版本为基础,最新的版本可以通过官网 http:...

2499
来自专栏运维咖啡吧

Django配置Celery执行异步任务和定时任务

celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度。采用典型的生产者-...

2492
来自专栏Java3y

Tomcat+Servlet面试题都在这里

下面是我整理下来的Servlet知识点: ? 图上的知识点都可以在我其他的文章内找到相应内容。 Tomcat常见面试题 Tomcat的缺省端口是多少,怎么修改 ...

4303
来自专栏IMWeb前端团队

FIS源码-fisrelease概览

本文作者:IMWeb 陈映平 原文出处:IMWeb社区 未经同意,禁止转载 前面已经已fis server open为例,讲解了FIS的整体架构设计,...

2098
来自专栏云计算与大数据

研发:Idea工具因为版本工具设置问题,导致全是红色

I have the current status of my files in the folders coloured red/brown. I tried...

1413
来自专栏along的开发之旅

LabVIEW,NI-DAQmx,LabWindows各个版本下载

最近实验室要用LabVIEW采集数据,找了一下下载地址,官网需要注册,很不爽。后经查找,发现有个专门用来下载的不需要注册的http://download.ni....

1873
来自专栏linux运维学习

linux学习第二十三篇:shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向

shell介绍 什么是shell, shell是一个命令解释器,提供用户和机器之间的交互。支持特定语法,比如逻辑判断、循环。每个用户都可以有自己特定的shel...

2109
来自专栏JavaEdge

Cookie与Session基础知识点

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。 Cookie通过在客户端记录信...

47611
来自专栏coder修行路

Python爬虫番外篇之Cookie和Session

关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整...

2397

扫码关注云+社区

领取腾讯云代金券