简单的一个远传采集并下载远传图片存储到本地示例

针对淘宝的数据采集写了个简单的示例,但是最好的还是要用淘宝api去获取信息这个是比较正规的

<?php
/**
    * 采集淘宝数据
    * @Author Bieanju
    **/
    header("Content-Type:text/html; charset=utf-8");
    $url = "https://item.taobao.com/item.htm?spm=a217h.7274645.1998424065.10.5kIFLZ&id=43823358756";
    $str = file_get_contents($url);
    $str = mb_convert_encoding($str,‘UTF-8‘,‘GBK‘);
    $goods[‘title‘] = preg_substr(‘/<h3 class="tb-main-title"[^>]*>/‘,‘/<\/h3>/‘,$str);
    $goods[‘market_price‘] = preg_substr(‘/<em class="tb-rmb-num">/‘,‘/<\/em>/‘,$str);
    preg_match(‘/<([a-z]+)[^i]*id=\"J_StrPrice\"[^>]*>([^<]*)<\/\\1>/is‘, $str, $price);
    preg_match(‘/]*id="J_ImgBooth"[^r]*rc="([^"]*)"[^>]*>/‘, $str, $img);
    $goods[‘price‘] = !empty($price[1]) ? $price[1] : 0;
    $url =!empty($img[1]) ? getImage(‘http:‘.$img[1],‘‘,‘upload‘,array(‘jpg‘,‘gif‘,‘png‘),1) : 0;
    $goods[‘url‘] = $url;
    if(isset($goods) && !empty($goods)){
        echo "采集成功!<br />商品名称【".$goods[‘title‘]."】<br />商品价格【".$goods[‘market_price‘]."】<br />商品图片已成功保存到本地【".$goods[‘url‘]."】<br /><img src=‘".$goods[‘url‘]."‘ />";
    }else{
        exit("采集失败,请重试!");
    }
    /**
        * 匹配区域采集数据
        * @Author Bieanju
        **/
    function preg_substr($start, $end, $str){
        $temp = preg_split($start, $str);
        $content = preg_split($end, $temp[1]);
        return $content[0];
    }

    /**
        * 下载图片到本地
        * @Author Bieanju
        **/
    function getImage($url, $filename=‘‘, $dirName, $fileType, $type=0){
        if($url == ‘‘){return false;}
        $defaultFileName = basename($url);
        $suffix = substr(strrchr($url,‘.‘), 1);
        if(!in_array($suffix, $fileType)){
            return false;
        }
        $filename = $filename == ‘‘ ? time().rand(0,9).‘.‘.$suffix : $defaultFileName;
        if($type){
            $ch = curl_init();
            $timeout = 5;
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $file = curl_exec($ch);
            curl_close($ch);
        }else{
            ob_start();
            readfile($url);
            $file = ob_get_contents();
            ob_end_clean();
        }
        $dirName = $dirName.‘/‘.date(‘Y‘, time()).‘/‘.date(‘m‘, time()).‘/‘.date(‘d‘,time()).‘/‘;
        if(!file_exists($dirName)){
            mkdir($dirName, 0777, true);
        }
        $res = fopen($dirName.$filename,‘a‘);
        fwrite($res,$file);
        fclose($res);
        return $dirName.$filename;
    }
?>
时间: 2024-10-11 17:22:19

简单的一个远传采集并下载远传图片存储到本地示例的相关文章

简单的上传文件和下载文件

简单的上传文件和下载文件: request.setCharacterEncoding("utf-8"); / *设置编码格式 */ response.setContentType("application/msword");  /*使浏览器能区分数据的种类,这里是word文件类型*/ Part part = request.getPart("files"); /*取的需要上传的文件*/ String path = this.getServletC

简单实现一个文件上传的进度条

新手初学web 文件上传做完了 进度做了 没有进度条只有文字 不太好看  需要做个进度条  没有美工 网上很多的 进度条 需要图片 还有各种框架 看着好麻烦 只好自己弄一个 还挺简单的 没想象的那么复杂  分享一下 jsp页面 <tr> <td width="100">图片</td> <td> <div style="width: 450px;"> <div class="file-box&

腾讯对象存储服务COS加密签名上传文件与下载文件的剖析,福利提供给所有使用Android的小伙伴们!

在做一些用户需求的时候,公司往往需要工程师采集到更多有用的关于用户的个人信息,然后对用户群进行分析,今天我不是来分析这些的,今天我主要是说 腾讯推出的款云产品,那就是对象存储服务COS,这个产品面向所有开发者,新用户都有免费享有10G的使用权,10G可能对于做方案的工程师来说可能是微不 足道的,比如后视镜和车载方案,会常常需要用到视频的存储与云分享,当然这里不是只本地存储哦,我指的是用户在使用方案商的方案的时候,比如他开车 的时候录了一段视频需要分享到某个域,共享给大家看,比如微信,这时候他肯定

WP8.1 Study17:网络之后台下载/上传及HttpClient

一.后台下载/上传 1.简介 使用BackgroundTransferGroup可以十分方便操作上传及下载文件,BackgroundDownloader和BackgroundUploader类中的方法提供一系列方法交互这一过程,因此我们也可以利用live tile或toast显示传输的状态. 2.下载代码 代码一: async void DownloadFile(Uri sourceUri, string destFilename) { cts = new CancellationTokenSo

Android06_getpost提交_文件上传_多线程下载

提交数据有中文的话,一定要用URLEncoder进行编码 1,Get方式提交数据 1.1案例:发送QQ账号和密码 ①把信息通过网络请求发送到服务器 ②在服务端数据库查询账号密码是否存在 ③服务器返回具体的信息 1.1.1,Web端的实现 ①创建一个Servlet接收客户端请求 ②获取请求数据 ③封装成对象传入数据库中(因为主要是练习Android的网络请求,所以这里可以简化一下,直接判断两个数据是否相等) ④查询数据库返回结果 //通过response对象返回结果,response.getOut

Struts2实现文件的上传与动态下载功能。

本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class FileBag implements java.io.Serializable {     // Fields     private Integer id;   //Id编号     privat

Jmeter和LR上传文件和下载

Jmeter和LR上传文件和下载 背景: 在某个申请业务中,需要上传附件文件,然后才能提交该申请 遇到的问题: 1,  在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fiddler能查看到该请求 2,  因为录制不下来,只能手工构造,但网上相关的材料太少. 所以在这里整理备忘 Fiddler录制得到的请求的Header和Body如下面的两个截屏 body 截图如上,注意Header截图[Content-Type:multipart/form-data;boundary=

GitHub上传代码和下载代码方法

上传代码: 1.打开GitHub Windows客户端. 2.右键打开目录,选择“Open in  Explorer”. 3.将要添加的代码移动到弹出的文件夹中. 4.返回客户端中添加Summary(标题)和Description(描述). 5.点击“Commit to master”就会在左侧显示一个“Unsynced Commits”. 6.点击右上方的“Sync”按钮,这些软件就会自动上传代码到远程服务器. 7.可以登录GitHub项目主页,查看代码是否上传成功. 下载代码: 一.下载别人

下载不含数据EXCEL的固定表头模版(标准EXCEL只含有列头),然后上传EXCEL.显示成功和上传失败的EXCEL连接

<div id="import" runat="server" visible="false"> Step1:<asp:HyperLink ID="HyperLink1" NavigateUrl="~/CommonTemplate/设备清单模版.xlsx" runat="server">下载模版</asp:HyperLink><br />