• 一、场景
  • 二、猜想
  • 三、验证猜想
    • 1、F12尝试查看图片地址
    • 2、那我们就查看是不是在网络数据中
    • 3、验证其它页面数据是否同理
    • 4、图片地址
  • 四、代码思路
  • 五、实现代码
  • 六、结果
    • 代码在命令行执行打印截图
    • 文件夹效果图.jpg
  • 七、其他

一、场景

有这么一个地址https://book.yunzhan365.com/yngc/gmhg/mobile/index.html?from=groupmessage&isappinstalled=0,我们希望能把这本书下载到本地,用来学习,页面如下:

二、猜想

  • 1、大家可以看到这个页面类似一张图片,应该是有图片地址什么的。我们可以直接F12去选中元素,尝试查看图片的地址
  • 2、大家可以看到下方中间我圈出了一个红色的1/100,目前猜测:这个大概意思的图片的数量

三、验证猜想

1、F12尝试查看图片地址

  • 如下图,可以发现并没有我们意料中的图片地址

2、那我们就查看是不是在网络数据中

  • F12之后,先点击删除,然后依次点击: 网络 -> 所有 -> F5刷新页面 -> 随便点一个链接地址 -> 点击响应,看一下有没有哪个响应是返回一直图片的,如下图

  • 还真有一个地址是响应图片的,我们再点击消息头,查看图片地址:https://book.yunzhan365.com/yngc/gmhg/files/thumb/1.jpg?1582796421=&x-oss-process=image/format,webp,把图片地址输入到浏览器访问,浏览器正常显示一张图片。

3、验证其它页面数据是否同理

  • 我们可以发现,往右边翻的时候:页面会提前缓存下一页(就是两张图片)的数据:意思就是第一页就缓存了(1,2,3)3张图片;第二页(2,3)提前读取了下一页的(4,5)两张图片,以此类推…读到(14,15)页的时候,提前读取了(16,17)页的图片。
  • 往左边翻页反之:第100页,提前读取(98,99)页的数据;第(98,99)页,提前读取(96,97)页的数据

4、图片地址

  • 我们可以得出图片有100张,地址为
  • https://book.yunzhan365.com/yngc/gmhg/files/thumb/1.jpg,
  • https://book.yunzhan365.com/yngc/gmhg/files/thumb/2.jpg,
  • https://book.yunzhan365.com/yngc/gmhg/files/thumb/100.jpg

四、代码思路

根据以上结论,可以出一道题:已知有100张图片,https://book.yunzhan365.com/yngc/gmhg/files/thumb/page.jpg,page的值为[1, 100],请把这些图片下载到本地

【编码思路(这里跟语言没什么关系)】

  • 1、for循环从1-100
  • 2、远程图片下载到本地
  • 3、(递归)创建文件夹,给文件夹最大权限(这个看情况)

五、实现代码

//我这个Demo在命令行中执行:在命令行执行的话需要配置PHP的环境变量
public function test() {set_time_limit(0); //在命令行执行不存在超时问题,可以不设置这一句;如果是在浏览器执行,为防止超时,请设置这一句$pageTotal = 100;for ($page = 1; $page <= $pageTotal; $page ++) {$url = "https://book.yunzhan365.com/yngc/gmhg/files/mobile/{$page}.jpg";self::download($url, 'images/厨房抽油烟风机/');echo "第[{$page}]张图片下载完成" . PHP_EOL;}
}function download($url, $path = 'images/') {if (!file_exists($path)) {self::createDirectory($path);}$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);
}function createDirectory($dir) {return  is_dir ( $dir ) or self::createDirectory(dirname( $dir )) and  (mkdir ( $dir , 0777) && chmod($dir, 0777));
}

六、结果

代码在命令行执行打印截图

文件夹效果图.jpg

七、其他

  • 我要尝试下载更多:http://www.yunzhan365.com/explore/
  • PHP设置环境变量

PHP数据处理之下载远程图片到本地相关推荐

  1. php下载远程图片到本地(总结)

    1. file_get_contents方法将图片下载到本地: <?php function geturlpic($file_url, $save_to){$content = file_get ...

  2. thinkphp下载远程图片到本地

    $url="http://www.test.com/test.jpg";//图片远程地址$local="./Upload/test/test.jpg";//下载 ...

  3. nginx-lua-openresty-graphicsmagick 下载远程图片,本地缩图红缓存加水印

    2019独角兽企业重金招聘Python工程师标准>>> 先上全部代码吧nginx.confworker_processes auto; user hubs; # 日志级别调试时可设为 ...

  4. PHP下载/采集远程图片到本地

    2019独角兽企业重金招聘Python工程师标准>>> PHP下载/采集远程图片到本地01 /** 02* 下载远程图片到本地 03* 04* @param string $url ...

  5. php中的图像下载函数,PHP实现的下载远程图片自定义函数分享

    /** * PHP下载远程图片到本地 * * @param $url string 远程文件地址 * @param $filename string 保存后的文件名(为空时则为随机生成的文件名,否则为 ...

  6. php完美实现下载远程图片保存到本地(保存微信头像)

    2019独角兽企业重金招聘Python工程师标准>>> /** * php完美实现下载远程图片保存到本地 * @param: 文件url,保存文件目录,保存文件名称,使用的下载方式 ...

  7. php curl 下载图片,CURL实现下载远程图片并保存到本地

    WEB开发中我们经常使用一些简单的采集功能,这样可以自动把远程服务器的图片或资源直接采集保存到本地服务器中:实现下载远程图片并把它保存到本地有很多方法,比如可以直接能过file_get_content ...

  8. php 远程图片大小,PHP下载远程图片并保存到本地方法总结

    这篇文章主要介绍了PHP下载远程图片并保存到本地方法总结的相关资料,需要的朋友可以参考下 1.获取远程文件大小及信息的函数 function getFileSize($url){ $url = par ...

  9. php下载 微信头像图片_php完美实现下载远程图片保存到本地(保存微信头像)...

    /** * php完美实现下载远程图片保存到本地 * @param: 文件url,保存文件目录,保存文件名称,使用的下载方式当保存文件名称为空时则使用远程文件原来的名称 * @date: 2017-0 ...

  10. 远程图片保存到服务器 php,保存远程图片到本地服务器几种方法[php,asp]网

    保存远程图片到本地服务器几种方法[,] function get_file($url,$folder){ set_time_limit (24 * 60 * 60); $destination_fol ...

最新文章

  1. php 数组 随机选择_php中通过数组进行高效随机抽取指定条记录的算法
  2. 模块计算机型x86yu,ldd3学习之九:与硬件通信
  3. 百度seo排名点击器_SEO整站优化思路 - 百度seo排名点击
  4. Codeforces 439C Devu and Partitioning of the Array(模拟)
  5. 一天一个小技巧(2)——CSDN编译器的首行缩进2字符
  6. JDBCAPI简介(二)
  7. 百度云安装WordPress,提示数据库连接错误!
  8. 新建文件夹god.html,win10 新建文件夹没有了
  9. JAVA程序员的5年职业规划
  10. Python的Profile概述
  11. shell脚本实操学习之函数、正则表达式
  12. 一篇难得的关于傅里叶分析的好文
  13. obj 与 fbx 三维模型文件对比
  14. 像素游戏素材RPGmaker系列美术资源
  15. 爬取京东评论并生成词云
  16. 安全笔记:综合|计算机基础四本书(信安相关)【未完成】
  17. cad二次开发-在vs编译软件环境下使用c#语言编写dll文件-添加单行文本
  18. 线上部署SpringBoot项目
  19. ssas脚本组织程序_SSAS 使用手册.doc
  20. 中科蓝讯蓝牙: 530X_532X 等音量系统调节

热门文章

  1. itellij jdk多重选择Class JavaLaunchHelper is implemented in both
  2. 透明flash代码_Animate/FLASH如何制作纵深前进的动画
  3. fastjson 序列化 不包括转义字符_fastjson漏洞复现
  4. html css字体最小,html-字体大小CSS问题
  5. java中方法的_Java中的常用方法
  6. android 安全加固总结报告,[原创]某加固详细分析总结,另附该加固脱壳机
  7. java swing弹出输入框_JavaSwing文本框输入中文弹出输入窗口
  8. tp5组装数据_tp5数据库查询和模型结合使用
  9. http 网页突然报502 bad gateway,平台宕掉
  10. SpringBoot:事件的发布和监听