功能
1.抓取页面。即http协议的GET方法。
2.发送POST请求。即http协议的POST方法。
3.支持文件上传。
4.支持HTTPS。
5.支持自定义HTTP头。
6.支持cookie.
特点
1.内置COOKIE支持。
cookie支持是这个类库最大的亮点,自动处理cookie,保持连续抓取时的会话状态,感觉就像是在使用浏览器。
2.接口简单。
简单的接口,保证您在一行代码中实现一次漂亮的HTTP抓取,同时程序不失其可读性。
如果不需要特别复杂的功能,可以把curl丢在一边了,在简单易用性上超越curl。
3.兼容性强。
它使用php内置socket函数实现,不需要第三放php扩展,兼容SAE同时不依赖SAE,以保证你在此基础上开发的程序有足够的兼容性。可以说在功能、兼容性和易用性上都超越fetchurl。
使用参考
1.在抓取页面前,首先创建http对象
PHP代码
$http = new http;
可以传递一个参数表示是否使用cookie,默认为true.
2.抓取网址.
以抓取 http ://www.xxorg.com/path/file.php?key1=val1&key2=val2 为例
假设以下变量已赋值
PHP代码
$url = 'http://www.xxorg.com/path/file.php?key1=val1&key2=val2';
$file = 'http://www.xxorg.com/path/file.php';
$query = 'key1=val1&key2=val2';
$query_array = array( 'key1'=>'val1', 'key2'=>'val2' );
方法1:
PHP代码
$result = $http->get($url);
方法2:
PHP代码
$result = $http->get($file,$query);
注意: $http->get($url,$query)与$http->get($file,$query)相同,即第二个参数不为空时,会将第一个参数中的query_string截掉.
方法3:
PHP代码
$result = $http->get($file,$query_array);
支持多维数组的提交
使用第三个参数模拟来路:
PHP代码
$result = $http->get($url, '', $referer);
3.发送POST请求
以下面网页表单为例
HTML代码
PHP代码
$url = 'http://www.xxorg.com/file.php';
$form_data = array('username' => 'test', 'password' => 'test' );
$result = $http->post($url,$form_data);
post方法跟get方法几乎一致,第二个参数也可以是字符串,数组,多维数组,也有第三个参数,表示来路.
4.文件上传
以下面网页表单为例
HTML代码
PHP代码
$url = 'http://www.xxorg.com/file.php';
$form_data = array('username' => 'test' );
$files = array( array('name'=>'image1',file='1.jpg'), array('name'=>'image2',file='2.jpg') );
$result = $http->post2($url,$form_data,$files);
post2方法与post方法类似,可以说post2是post的升级版,增加了文件上传功能,第三个参数是要上传的文件,用于模拟来路的referer参数变为第四个.
小技巧:post2与post方法参数类似,但在实现上有本质的不同,post2的files参数是可选的.它们实际上是两种不同的表单提交方法,当使用post方法提交失败时可以尝试post2.
5.获取返回信息
get,post,post2返回值即为抓取到内容,同时还可以使用recv属性获取返回内容.
PHP代码
echo $http->get($url);
echo $http->recv;
同时还有以下属性可供使用
$http->header 服务器返回的http响应头
$http->lenght 返回的内容的长度
$http->status 200,404之类的状态码
$http->error 发生错误时的错误信息
$http->mime
6.cookie处理
PHP代码
$cookie = $http->export_cookie();
export_cookie方法返回当前http对象内部保存的cookie,格式是内部格式,仅用于import_cookie函数.
PHP代码
$http->import_cookie($cookie);
将由export_cookie返回的$cookie变量传递给http对象,用于还原之前的http会话状态。
PHP代码
$http->bind_cookie($cookie);
bind_cooke方法将一个由您指定的变量的引用传递给http对象,与import_cookie不同的是,此方法传递的是变量引用,http内部对cookie的操作仍将作用于$cookie变量
PHP代码
$http->get_cookie($domain,$path);
get_cookie方法获取指定域名和路径下cookie值,返回值为字符串.当然还有一个set_cookie方法,此方法与php函数setcookie参数几乎一致,不再多说.
7.调试
debug属性提供了对调试功能的开启和关闭.
PHP代码
$http->debug = true;
这将开启调试功能,即输出http请求头和http响应头信息,用于观察http通讯状态.
还有一个debug方法,用于输出自定义的调试信息,此方法同样受debug属性的控制.
实例演示
下面用不到20行的代码演示一个从ems网站查询快递信息的过程。旨在演示,不做后期的数据处理。
PHP代码
@session_start();
include 'http.class.php';
$http = new http;
$http->bind_cookie($_SESSION['ems_cookie']);
if ( isset($_GET['action']) && $_GET['action']=='img' )
exit($http->get('http://www.ems.com.cn/ems/rand'));
if ( isset($_GET['action']) && $_GET['action']=='query' )
exit( $http->post('http://www.ems.com.cn/ems/order/singleQuery_t',$_POST) );
?>
下载地址:
http://disk.xxorg.com/file/335cef38.html
最新评论
家里挂了一个玩客云,有什么办法能电脑远程访问玩客云里图片视频,能不能回复一下我的QQ邮箱837423271@qq.com.有偿请教
666,我反而想在vps搭建smb服务端,家里PC挂载上。还想过能不能在vps同时搭个v2ray服务端,PC连上v2ray后自动内网挂载~
站长,可以直接给出一个nat类型的结论显示吗?
ubuntu 系统怎么操作呢?求问问。
右上角有个个人微信二维码 有加过的吗 我加了但是没通过,是不是博主微信
已经无法打开了!
没标出来活动什么时候结束,刚刚去看了,结束了
我比较想知道怎么联系博主…