php通过curl函数取得数据、模拟登陆、POST数据

作者:袖梨 2022-06-24

例子,使用php curl获取网页数据的方法:

代码如下 复制代码

$ch=curl_init();
//设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"https://www.111cn.net");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
//执行并获取HTML文档内容
$output=curl_exec($ch);
//释放curl句柄
curl_close($ch);


使用php curl post提交数据的方法

代码如下 复制代码

$url="https://www.111cn.net/ curl_post.php";
$post_data=array (
"nameuser"=>"syxrrrr",
"pw"=>"123456"
);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
$output=curl_exec($ch);
curl_close($ch);
echo $output;

取得数据、模拟登陆、POST数据

代码如下 复制代码

/********************** curl 系列 ***********************/
//直接通过curl方式取得数据(包含POST、HEADER等)
/*
* $url: 如果非数组,则为http;如是数组,则为https
* $header: 头文件
* $post: post方式提交 array形式
* $cookies: 0默认无cookie,1为设置,2为获取
*/
public function curl_allinfo($urls, $header = FALSE, $post = FALSE, $cookies = 0) {
$url = is_array($urls) ? $urls['0'] : $urls;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//带header方式提交
if($header != FALSE){
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}

//post提交方式
if($post != FALSE){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}

if($cookies == 1){
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
}else if($cookies == 2){
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
}

if(is_array($urls)){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}

$data = curl_exec($ch);
curl_close($ch);
return $data;
}

最后附一个模仿搜索引擎蜘蛛来抓取网页

代码如下 复制代码

function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page 返回网页
CURLOPT_HEADER => false, // 不返回头信息
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // 设置UserAgent
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect 连接超时
CURLOPT_TIMEOUT => 120, // timeout on response 回复超时
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header[''errno''] = $err;
$header[''errmsg''] = $errmsg;
$header[''content''] = $content;
return $header;
}

相关文章

精彩推荐