没有合适的资源?快使用搜索试试~ 我知道了~
一、类文档说明 代码如下:class FetchUrl{ function __construct(); //返回网页内容 常用于fetch()方法返回false时 function body(); //将对象的数据重新初始化,用于多次重用一个FetchUrl对象 function clean(); //返回错误信息 function errmsg(); //返回错误码,>0表示有错误 function errcode(); /** * 发起请求 * $url string 请求地址 * $callback function 匿名函数 */ function fetch(string
资源推荐
资源详情
资源评论
用用C实现实现PHP扩展扩展 Fetch_Url 类数据抓取的方法类数据抓取的方法
一、类文档说明一、类文档说明
代码如下:
class FetchUrl{
function __construct();
//返回网页内容 常用于fetch()方法返回false时
function body();
//将对象的数据重新初始化,用于多次重用一个FetchUrl对象
function clean();
//返回错误信息
function errmsg();
//返回错误码,>0表示有错误
function errcode();
/**
* 发起请求
* $url string 请求地址
* $callback function 匿名函数
*/
function fetch(string $url, function $callback);
//请求返回HTTP Code
function httpCode();
//请求返回Cookies数组
function responseCookies();
//请求返回头部信息数组
function responseHeaders();
//是否允许截断,默认为不允许
function setAllowRedirect(bool $allow=false);
//设置连接超时时间
function setConnectTimeout(int $seconds=5);
//在发起的请求中,添加cookie数据
function setCookie(string $name, string $value);
//在发起的请求中,批量添加cookie数据
function setCookies(array $cookies);
//设置请求的方法(POST/GET)
function setMethod(string $method=”get”);
//设置POST方法的数据
function setPostData(array $data);
//设置读取超时时间
function setReadTimeout(int $seconds=60);
function __destroy();
}
二、使用案例二、使用案例
代码如下:
<?php
/*GET抓取http://www.baidu.com*/
/*
$fetch_url = new FetchUrl();
$fetch_url->setAllowRedirect(true);
$fetch_url->fetch(‘http://www.baidu.com’);
*/
$cookies = array(
‘wei_xin_wb_session’=>’value’,
‘wei_xin_wxblog_authcoder’=>’value’);
/*POST提交数据*/
/*
$fetch_url = new FetchUrl();
$fetch_url->setMethod(‘post’);
$data = array(
‘step’=>2,
‘pays[1]’=>0,
‘pays[2]’=>0,
‘pays[3]’=>0
);
$fetch_url->setCookies($cookies);
$fetch_url->setPostData($data);
$fetch_url->fetch(‘http://test.wx.pp.cc/wb_advs/manage?inajax=1’);
*/
//POST上传数据和文件
$fetch_url = new FetchUrl();
$fetch_url->setAllowRedirect(true);
$fetch_url->setMethod(‘post’);
$data = array(
‘nickname’=>’挺好a’,
‘wxnickname’=>’good’,
‘wxusername’=>’good’,
‘intro’=>’good’
);
$fetch_url->setCookies($cookies);
$fetch_url->setPostData($data);
$binary = file_get_contents(“http://huoche.7234.cn/images/jb51/el4neohutg5.gif”);
$fetch_url->setBinary(“picfile”, “demo.jpg”, $binary);//上传二进制文件
// $fetch_url->setFile(“picfile”, “C:/Users/Administrator/Desktop/123.jpg”);//上传指定文件
if($fetch_url->errcode() == 0){
$fetch_url->fetch(‘http://wx.pp.cc/wb_ajax/addwxuser/0’);
if($fetch_url->httpCode() == 200){
$html = $fetch_url->body();
echo $html;
}
}else{
echo “errmsg:”.$fetch_url->errmsg().”, errcode:”.$fetch_url->errcode();
}
//返回请求头部信息
print_r($fetch_url->responseHeaders());
//清空之前的请求设置,复用$fetch_url。
$fetch_url->clean();
$fetch_url->fetch(“http://www.baidu.com”);
print_r($fetch_url->responseHeaders());
三、扩展实现三、扩展实现
1.php_fetch_url.h
代码如下:
/*
+———————————————————————-+
| PHP Version 5 |
+———————————————————————-+
| Copyright (c) 1997-2012 The PHP Group |
+———————————————————————-+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+———————————————————————-+
| Author: |
+———————————————————————-+
*/
/* $Id$ */
#ifndef PHP_FETCH_URL_H
#define PHP_FETCH_URL_H
extern zend_module_entry fetch_url_module_entry;
#define phpext_fetch_url_ptr &fetch_url_module_entry
#ifdef PHP_WIN32
# define PHP_FETCH_URL_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
# define PHP_FETCH_URL_API __attribute__ ((visibility(“default”)))
#else
# define PHP_FETCH_URL_API
#endif
#ifdef PHP_WIN32
#define FETCH_CURL_MODE CURL_GLOBAL_WIN32
#else
#define FETCH_CURL_MODE CURL_GLOBAL_ALL
#endif
#ifdef ZTS
#include “TSRM.h”
#endif
#define FETCH_CLASS_NAME “FetchUrl”
#define FETCH_CLASS_CE g_fetch_ce
#define FETCH_THIS Z_OBJCE_P(getThis()), getThis()
#define FETCH_ERROR(errmsg, errno) zend_update_property_stringl(FETCH_THIS, ZEND_STRL(“errmsg”), errmsg,
sizeof(errmsg)-1 TSRMLS_CC);\
zend_update_property_long(FETCH_THIS, ZEND_STRL(“errno”), errno TSRMLS_CC)
PHP_MINIT_FUNCTION(fetch_url);
PHP_MSHUTDOWN_FUNCTION(fetch_url);
PHP_RINIT_FUNCTION(fetch_url);
PHP_RSHUTDOWN_FUNCTION(fetch_url);
PHP_MINFO_FUNCTION(fetch_url);
#ifdef ZTS
#define FETCH_URL_G(v) TSRMG(fetch_url_globals_id, zend_fetch_url_globals *, v)
#else
#define FETCH_URL_G(v) (fetch_url_globals.v)
#endif
#endif /* PHP_FETCH_URL_H */
2.fetch_url.c
代码如下:
/*
+———————————————————————-+
| PHP Version 5 |
+———————————————————————-+
| Copyright (c) 1997-2012 The PHP Group |
+———————————————————————-+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+———————————————————————-+
| Author: |
+———————————————————————-+
*/
/* $Id$ */
剩余21页未读,继续阅读
资源评论
weixin_38651786
- 粉丝: 7
- 资源: 915
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于C#实现SQLite患者信息管理数据库操作技术方案
- 【python毕业设计】食堂外卖系统源码(完整前后端+mysql+说明文档).zip
- 【python毕业设计】摄影交流平台源码(完整前后端+mysql+说明文档).zip
- 【python毕业设计】平南盛世名城小区疫情防控系统源码(完整前后端+mysql+说明文档+LW).zip
- qt5半成品飞机大战小游戏
- 基于springboot的“衣依”服装销售平台的设计与实现(代码+数据库+LW)
- 【python毕业设计】旅游信息管理系统源码(完整前后端+mysql+说明文档).zip
- 【python毕业设计】基于python的图书馆管理系统源码(完整前后端+mysql+说明文档+LW).zip
- 计算机语言学中n-gram
- (全新整理)清科政府引导基金数据(1990-2023年)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功