• php爬虫神器cURL


    cURL

    网页资源(编写网页爬虫)
    接口资源
    ftp服务器文件资源
    其他资源

    static public function curl($url, $data = array(), $timeout = 5) {
    		$ch = curl_init ();
    		if (is_array ( $data ) && $data) {
    			// http_build_query — 生成 URL-encode 之后的请求字符串,支持数组提交
    			$formdata = http_build_query ( $data );
    			
    			curl_setopt ( $ch, CURLOPT_POST, true );
    			curl_setopt ( $ch, CURLOPT_POSTFIELDS, $formdata );
    		}
    		curl_setopt ( $ch, CURLOPT_URL, $url );
    		curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
    		curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    		curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
    		$result = curl_exec ( $ch );
    		curl_close ( $ch );
    		return $result;
    }
    

    下面是简单的爬虫,爬网页数据。

    <?php
    /**
     * 简单爬虫
     */
    $ch = curl_init('http://www.baidu.com');
    curl_exec($ch);
    curl_close($ch);
    

    替换爬出来的网页数据。

    <?php
    /**
     * 简单爬虫
     */
    $curlobj = curl_init();
    curl_setopt($curlobj,CURLOPT_URL,"http://www.baidu.com"); // 设置抓取的网页
    curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 设置不打印
    $output=curl_exec($curlobj); // 执行
    curl_close($curlobj); // 关闭
    echo str_replace("百度","搜索",$output);
    

    post调接口数据

    http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getWeather
    

    <?php
    /**
     * 简单爬虫
     */
    $curlobj = curl_init();
    $url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather";
    $data= "theCityCode=宿迁&theUserID=6c0fbb1189324dfab6a66963738d768b"; // 麻痹,这个只能试用五天
    curl_setopt($curlobj,CURLOPT_URL,$url); // 设置抓取的网页
    curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 设置不打印
    curl_setopt($curlobj,CURLOPT_POST,1); // 设置post
    curl_setopt($curlobj,CURLOPT_POSTFIELDS,$data); // 设置post数据
    $output=curl_exec($curlobj); // 执行
    if(!curl_errno($curlobj)){ // 返回错误代码或在没有错误发生时返回 0 (零)。
        echo $output;
    } else {
        echo 'Curl error:'.curl_error($curlobj);
    }
    curl_close($curlobj); // 关闭
    
    
    <?xml version="1.0" encoding="utf-8"?>
    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
      <string>江苏 宿迁</string>
      <string>宿迁</string>
      <string>1907</string>
      <string>2018/04/26 22:10:44</string>
      <string>今日天气实况:气温:18℃;风向/风力:西南风 1级;湿度:78%</string>
      <string>紫外线强度:弱。空气质量:良。</string>
      <string>紫外线指数:弱,辐射较弱,涂擦SPF12-15、PA+护肤品。
    健臻·血糖指数:较易波动,血糖较易波动,注意监测。
    感冒指数:较易发,温差较大,较易感冒,注意防护。
    穿衣指数:较舒适,建议穿薄外套或牛仔裤等服装。
    洗车指数:较适宜,无雨且风力较小,易保持清洁度。
    空气污染指数:良,气象条件有利于空气污染物扩散。
    </string>
      <string>4月26日 多云</string>
      <string>13℃/23℃</string>
      <string>南风3-4级</string>
      <string>1.gif</string>
      <string>1.gif</string>
      <string>4月27日 多云</string>
      <string>11℃/26℃</string>
      <string>东北风转东南风3-4级</string>
      <string>1.gif</string>
      <string>1.gif</string>
      <string>4月28日 多云</string>
      <string>17℃/27℃</string>
      <string>东南风3-4级</string>
      <string>1.gif</string>
      <string>1.gif</string>
      <string>4月29日 多云</string>
      <string>19℃/28℃</string>
      <string>东南风3-4级</string>
      <string>1.gif</string>
      <string>1.gif</string>
      <string>4月30日 多云</string>
      <string>19℃/30℃</string>
      <string>东南风转东风3-4级</string>
      <string>1.gif</string>
      <string>1.gif</string>
      <string>5月1日 小雨</string>
      <string>17℃/26℃</string>
      <string>东北风4-5级</string>
      <string>7.gif</string>
      <string>7.gif</string>
      <string>5月2日 多云转阴</string>
      <string>11℃/27℃</string>
      <string>东北风4-5级转无持续风向小于3级</string>
      <string>1.gif</string>
      <string>2.gif</string>
    </ArrayOfString>
    
    

    读取FTP数据

    <?php
    /**
     * 简单爬虫
     */
    $curlobj = curl_init();
    $url = "ftp://192.168.199.126/info.txt";
    curl_setopt($curlobj,CURLOPT_URL,$url); // 设置抓取的网页
    curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 设置不打印
    curl_setopt($curlobj,CURLOPT_HEADER,0);
    curl_setopt($curlobj,CURLOPT_TIMEOUT,300); // 设置300秒的下载时间
    $outfile = fopen('download_file.txt','wb'); // 保存到本地的文件名
    curl_setopt($curlobj,CURLOPT_FILE,$outfile);
    $r=curl_exec($curlobj); // 执行
    fclose($outfile);
    if(!curl_errno($curlobj)){ // 返回错误代码或在没有错误发生时返回 0 (零)。
        echo "RETURN:" .$r;
    } else {
        echo 'Curl error:'.curl_error($curlobj);
    }
    curl_close($curlobj); // 关闭
    
    
    RETURN:1
    
    <?php
    /**
     * 简单爬虫
     */
    $curlobj = curl_init();
    $url = "ftp://192.168.199.126/info.txt";
    curl_setopt($curlobj,CURLOPT_URL,$url); // 设置抓取的网页
    curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 设置不打印
    curl_setopt($curlobj,CURLOPT_HEADER,0);
    curl_setopt($curlobj,CURLOPT_TIMEOUT,300); // 设置300秒的下载时间
    //$outfile = fopen('download_file.txt','wb'); // 保存到本地的文件名
    //curl_setopt($curlobj,CURLOPT_FILE,$outfile);
    $r=curl_exec($curlobj); // 执行
    //fclose($outfile);
    if(!curl_errno($curlobj)){ // 返回错误代码或在没有错误发生时返回 0 (零)。
        echo "RETURN:" .$r;
    } else {
        echo 'Curl error:'.curl_error($curlobj);
    }
    curl_close($curlobj); // 关闭
    
    RETURN:hello world!
    

    上传FTP数据

    <?php
    /**
     * 简单爬虫
     */
    $curlobj = curl_init();
    $localfile = 'upload_file.txt';
    $fp = fopen($localfile,'r');
    $url = "ftp://192.168.199.126/upload/for_upload_file.txt"; // 确保目录有写权限
    curl_setopt($curlobj,CURLOPT_URL,$url); // 设置抓取的网页
    curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 设置不打印
    curl_setopt($curlobj,CURLOPT_HEADER,0);
    curl_setopt($curlobj,CURLOPT_TIMEOUT,300); // 设置300秒的下载时间
    
    curl_setopt($curlobj,CURLOPT_UPLOAD,1);
    curl_setopt($curlobj,CURLOPT_INFILE,$fp);
    curl_setopt($curlobj,CURLOPT_INFILESIZE,filesize($localfile));
    
    $r=curl_exec($curlobj); // 执行
    fclose($fp);
    if(!curl_errno($curlobj)){ // 返回错误代码或在没有错误发生时返回 0 (零)。
        echo "RETURN:上传成功!";
    } else {
        echo 'Curl error:'.curl_error($curlobj);
    }
    curl_close($curlobj); // 关闭
    
    

    还是很牛逼的,常用于post提交获取数据和爬虫获取资源。

  • 相关阅读:
    为何要对URL进行编码
    关于GreenPlum的一些整理
    Greenplum入门——基础知识、安装、常用函数
    PyGreSQL入门,pg模块,pgdb模块
    MySQL Test Suite使用
    MySQL到Greenplum迁移分析
    Method overrides should not change parameter defaults
    Why use a public method in an internal class?
    Git Submodules vs Git Subtrees
    To Allow App through Windows Defender Firewall in Command Prompt
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8961231.html
Copyright © 2020-2023  润新知