本文目录一览:
- 1、怎么把这个 curl 命令用 python requests 搞定
- 2、如何利用cURL和python对服务端和web端进行接口测试
- 3、RCurl-入门1
- 4、PHP的curl模块和python的pycurl模块的区别
怎么把这个 curl 命令用 python requests 搞定
import httplib
import json
p = { "method" : "test", "params" : [ { "detail" : "Hello_world"} ] }
headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
conn = httplib.HTTPConnection("127.0.0.1", 8081)
conn.request("POST","", json.dumps(p), headers)
如何利用cURL和python对服务端和web端进行接口测试
templateclass NameType, class DistType
int GraphNameType, DistType::GetVertexPosTable(const NameType vertexname)
{
for (int i=0; i this-m_numVertexs; i++)
{
if (vertexname == m_pVertexTable[i].m_vertexName)
{
return i;
}
}
return -1;
}
RCurl-入门1
Term Project需要做一个爬虫-Crawler。爬什么、怎么爬,都不确定。索性网上搜教程开始学。很多语言都可以实现这个功能,比如 Java 、 Python 、 R 这三个我感兴趣的语言。
今晚看到的 教学视频 是关于R的。
R 的爬虫Package为RCurl,首先需要在RStudio或R上安装,然后新建 R Script 后,引用该库。
今晚两小时,主题是: RCurl 最重要的三个函数。只看到了第一个的两个基本命令。
首先看一个很基本的查询网页是否存在的命令。
当网页存在是返回 TRUE ,否则返回 FALSE 。
第二个基本命令可以查询Header。
其中的 verbose=TRUE 参数表示是否要将结果存储在d中。 d 由 debugGatherer 赋予了三个method,分别是 update 、 value 、 reset 。当需要请求Header信息时,采用 update 函数,将信息存储在 value 中,如果需要重置 value ,则可使用 reset 。同时,如果 verbose=FALSE ,则会发现 value 中不会存储此次操作的信息。
PHP的curl模块和python的pycurl模块的区别
C的curl:
#include stdio.h
#include curl/curl.h
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. This URL can
just as well be a https:// URL if that is what should receive the
data. */
curl_easy_setopt(curl, CURLOPT_URL, "");
/* Now specify the POST data */
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=danielproject=curl");
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return ;
}
php的curl:
?php
$c = curl_init();
curl_setopt($c, CURLOPT_URL, '');
$data = curl_exec($c);
curl_close($c);
echo $c;
?
python的pycurl:
import pycurl
def body(buffer):
print buffer
c = pycurl.Curl()
c.setopt(pycurl.URL, "")
c.setopt(pycurl.WRITEFUNCTION, body)
c.perform()
主要原理:
C:
使用到的数据结构:
typedef void CURL; /*当初始化什么的时候只是一个void类型*/
struct SessionHandle {
struct Names dns;
struct Curl_multi *multi; /* 用于多线程处理*/
struct Curl_one_easy *multi_pos; /* if non-NULL, points to the its position
in multi controlling structure to assist
in removal. */
struct Curl_share *share; /* Share, handles global variable mutexing */
struct HandleData reqdata; /* Request-specific data */
struct UserDefined set; /* values set by the libcurl user ,用于setopt等*/
struct DynamicStatic change; /* possibly modified userdefined data */
struct CookieInfo *cookies; /* the cookies, read from files and servers */
struct Progress progress; /* for all the progress meter data */
struct UrlState state; /* struct for fields used for state info and
other dynamic purposes */
struct PureInfo info; /* stats, reports and info data */
#if defined(CURL_DOES_CONVERSIONS) defined(HAVE_ICONV)
iconv_t outbound_cd; /* for translating to the network encoding */
iconv_t inbound_cd; /* for translating from the network encoding */
iconv_t utf8_cd; /* for translating to UTF8 */
#endif /* CURL_DOES_CONVERSIONS HAVE_ICONV */
unsigned int magic; /* set to a CURLEASY_MAGIC_NUMBER */
};
struct UserDefined {
FILE *err; /* the stderr user data goes here */
void *debugdata; /* the data that will be passed to fdebug */
char *errorbuffer; /* (Static) store failure messages in here */
long proxyport; /* If non-zero, use this port number by default. If the
proxy string features a ":[port]" that one will override
this. */
/**一下省略10000行- -**/
};
使用的方法1:
.初始化curl,得到sessionhandler结构体空间
CURL *curl_easy_init(void)
{
CURLcode res;
struct SessionHandle *data;
/* Make sure we inited the global SSL stuff */
if (!initialized) {
res = curl_global_init(CURL_GLOBAL_DEFAULT);
if(res) {
/* something in the global init failed, return nothing */
DEBUGF(fprintf(stderr, "Error: curl_global_init failedn"));
return NULL;
}
}
/* We use curl_open() with undefined URL so far */
res = Curl_open(data);
if(res != CURLE_OK) {
DEBUGF(fprintf(stderr, "Error: Curl_open failedn"));
return NULL;
}
return data;
}