• 2022-09-04被罚款200元记6分.
  • 特么的.电脑风扇坏了.快递还全部停发.太难了...求求了.疫情赶紧走吧.
  • 难啊难!要钱难!
  • 更新到WordPress5.6啦
  • 有点伤心了,今年净遇到王某海这种人.
  • 难啊难...
  • 七牛的JS SDK 的文档真坑啊.
  • 蓝奏云分享部分地区无法访问需手动修改www.lanzous.com变为:www.lanzoux.com
  • 好气啊~原来使用的CDN服务商莫名其妙的给我服务取消了~
  • 遇见一个沙雕汽车人.

一个远程采集接口图片的小小案例

PHP KIENG 5年前 (2018-11-14) 179869次浏览 已收录 3个吐槽 扫描二维码

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

PHP并不太适合采集,建议用 Python 才稳定

话不多说了,上代码了....

<?php
/**
 * 随机图片远程采集案例
 * @author **
 * @url    http://blog.kieng.cn
 * @time   2018-11-14
 */
header('Content-type: application/json');

//图片接口地址
$url = 'https://cdn.mom1.cn/?mom=302';
// 图片存放文件夹
$path = 'images/';
//获取图片真实地址
$url = url_get($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 url_get($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_SSL_VERIFYHOST, 2);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	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;
}

最后发现这篇文章没有特色图~那我在接口里偷一手吧~
一个远程采集接口图片的小小案例


KIENG.CN , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权
转载请注明出处:一个远程采集接口图片的小小案例
本文章链接:https://blog.kieng.cn/289.html
喜欢 (6)
KIENG
关于作者:
一个热衷网络的Man
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 快速获取昵称
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(3)个小伙伴在吐槽
  1. 怎么能只采集数据保存为文本,而下载内容
    天天 | 中国江苏苏州市 电信2020-04-17 21:25 回复 Windows 7 | Chrome 78.0.3904.108
  2. 错了,只采集数据保存为文本,而不下载内容
    天天 | 中国江苏苏州市 电信2020-04-17 21:25 回复 Windows 7 | Chrome 78.0.3904.108
  3. 我也希望有这个功能如果只采集图片地保存在txt文本里更牛了博主这个采集成功的地址/为什么是\/这样显示
    okok | 中国浙江杭州市 移动2021-03-20 15:01 回复 Linux | Chrome 78.0.3904.108