使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网 页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内 容,cURL 是一个功能强大的PHP库。
	PHP中的CURL函数库(Client URL Library Function)
	curl_close — 关闭一个curl会话
	curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
	curl_errno — 返回一个包含当前会话错误信息的数字编号
	curl_error — 返回一个包含当前会话错误信息的字符串
	curl_exec — 执行一个curl会话
	curl_getinfo — 获取一个curl连接资源句柄的信息
	curl_init — 初始化一个curl会话
	curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
	curl_multi_close — 关闭一个批处理句柄资源
	curl_multi_exec — 解析一个curl批处理句柄
	curl_multi_getcontent — 返回获取的输出的文本流
	curl_multi_info_read — 获取当前解析的curl的相关传输信息
	curl_multi_init — 初始化一个curl批处理句柄资源
	curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
	curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
	curl_setopt_array — 以数组的形式为一个curl设置会话参数
	curl_setopt — 为一个curl设置会话参数
	curl_version — 获取curl相关的版本信息
	curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
	curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
	curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。
	例子一: 基本例子
	基本例子
	﹤?php
	// 初始化一个 cURL 对象
	$curl = curl_init();
	// 设置你需要抓取的URL
	curl_setopt($curl, CURLOPT_URL, 'http://www.genban.org');
	// 设置header
	curl_setopt($curl, CURLOPT_HEADER, 1);
	// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	// 运行cURL,请求网页
	$data = curl_exec($curl);
	// 关闭URL请求
	curl_close($curl);
	// 显示获得的数据
	var_dump($data);
	?>
	例子二: POST数据
	sendSMS.php,其可以接受两个表单域,一个是电话号码,一个是短信内容。
	POST数据
	﹤?php
	$phoneNumber = '13812345678';
	$message = 'This message was generated by curl and php';
	$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'http://www.genban.org/sendSMS.php');
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
	$data = curl_exec();
	curl_close($ch);
	?﹥
	例子三:使用代理服务器
	使用代理服务器
	﹤?php 
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'http://www.genban.org');
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
	curl_setopt($ch, CURLOPT_PROXY, 'proxy.genban.org:1080');
	curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
	$data = curl_exec();
	curl_close($ch);
	?﹥
	例子四: 模拟登录
	Curl 模拟登录 discuz 程序,适合DZ7.0,将username改成你的用户名,userpass改成你的密码就可以了.
	Curl 模拟登录 discuz 程序
	<?php 
	!extension_loaded('curl') && die('The curl extension is not loaded.');   
	$discuz_url = 'http://www.genban.org';//论坛地址   
	$login_url = $discuz_url .'/logging.php?action=login';//登录页地址   
	$get_url = $discuz_url .'/my.php?item=threads'; //我的帖子   
	$post_fields = array();   
	//以下两项不需要修改   
	$post_fields['loginfield'] = 'username';   
	$post_fields['loginsubmit'] = 'true';   
	//用户名和密码,必须填写   
	$post_fields['username'] = 'lxvoip';   
	$post_fields['password'] = '88888888';   
	//安全提问   
	$post_fields['questionid'] = 0;   
	$post_fields['answer'] = '';   
	//@todo验证码   
	$post_fields['seccodeverify'] = '';   
	//获取表单FORMHASH   
	$ch = curl_init($login_url);   
	curl_setopt($ch, CURLOPT_HEADER, 0);   
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
	$contents = curl_exec($ch);   
	curl_close($ch);   
	preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);   
	if(!empty($matches)) {   
	    $formhash = $matches[1];   
	} else {   
	    die('Not found the forumhash.');   
	}   
	//POST数据,获取COOKIE   
	$cookie_file = dirname(__FILE__) . '/cookie.txt';   
	//$cookie_file = tempnam('/tmp');   
	$ch = curl_init($login_url);   
	curl_setopt($ch, CURLOPT_HEADER, 0);   
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
	curl_setopt($ch, CURLOPT_POST, 1);   
	curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);   
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);   
	curl_exec($ch);   
	curl_close($ch);   
	//带着上面得到的COOKIE获取需要登录后才能查看的页面内容   
	$ch = curl_init($get_url);   
	curl_setopt($ch, CURLOPT_HEADER, 0);   
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);   
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);   
	$contents = curl_exec($ch);   
	curl_close($ch);   
	var_dump($contents);
	//上传文件
	    $file = 'file'; //要上传的文件
	    $url  = 'url';//target url    
	    $fields['f'] = '@'.$file;    
	    $ch = curl_init();    
	    curl_setopt($ch, CURLOPT_URL, $url );
	    curl_setopt($ch, CURLOPT_POST, 1 );
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );    
	    curl_exec( $ch );    
	    if ($error = curl_error($ch) ) {
	        die($error);
	    }
	    curl_close($ch);    
	    这里说明一下CURLOPT_POSTFIELDS这个参数如果是POST字符串时,可以用形如“name=value&...”的字符串,如果post文件,就必须要用数组,并且文件名格式为"@绝对路径",这是 CURL 會幫你做 multipart/form-data 編碼。
	<?php
	    $ch = curl_init();
	    curl_setopt($ch, CURLOPT_HEADER, 0);
	    curl_setopt($ch, CURLOPT_VERBOSE, 0);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
	    curl_setopt($ch, CURLOPT_URL, _VIRUS_SCAN_URL);
	    curl_setopt($ch, CURLOPT_POST, true);
	    // same as <input type="file" name="file_box">
	    $post = array(
	        "file_box"=>"@/path/to/myfile.jpg",
	    );
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
	    $response = curl_exec($ch);
	?>
The End


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)