• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 用C实现PHP扩展 Fetch_Url 类数据抓取的方法

用C实现PHP扩展 Fetch_Url 类数据抓取的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了failed to fetch url,fetch url,fail to fetch url,php fetchall,php mysql fetch等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、类文档说明

 //返回网页内容 常用于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();
}
</div>
二、使用案例

$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://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.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());
</div>
三、扩展实现
1.php_fetch_url.h

/* $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

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用C实现PHP扩展 Fetch_Url 类数据抓取的方法

相关文章

  • 2017-05-28MFC程序执行过程深入剖析
  • 2017-05-28C++中vector容器的常用操作方法实例总结
  • 2017-05-28C++程序设计-五子棋
  • 2017-05-28双缓冲解决VC++绘图时屏幕闪烁
  • 2017-05-28基于C语言实现的迷宫游戏代码
  • 2017-05-28C++动态内存分配(new/new[]和delete/delete[])详解
  • 2017-05-28snprintf函数的用法解析
  • 2017-05-28基于C语言实现简单的12306火车售票系统
  • 2017-05-28C++实现迷宫算法实例解析
  • 2017-05-28简单谈谈C++ 头文件系列之(iosfwd)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 简易Dota改键外挂程序制作
    • C语言 数组指针详解及示例代码
    • C++事件处理中的__hook与__unhook用法详解
    • C++中I/O模型之select模型实例
    • 深入sizeof的使用详解
    • C语言putenv()函数和getenv()函数的使用详解
    • linux下基于C语言的信号编程实例
    • C语言使用回溯法解旅行售货员问题与图的m着色问题
    • C++访问Redis的mset 二进制数据接口封装方案
    • 关于尝试开发PHP的MYSQL扩展的使用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有