php爬虫神器cURL

cURL

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

422101-20180426115436855-1209165522.png

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

422101-20180426222133401-908399252.png

<?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提交获取数据和爬虫获取资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值