库的安装
下载
https://github.com/curl/curl/releases/tag/curl-7_71_1
安装
将下载的包放在ubuntu中
安装步骤如下
./configure
make
make test (optional)//安装选项,可以不选,省去这一步
make install//默认安装可能安装到/usr/lib中,需要root权限
依次输入
./configure --prefix=$PWD/_install
make -j8
make install
–prefix是编译选项,用于指定编译安装路径
此外还有
–host=arm-linux-gcc
可以用来指定交叉编译工具,比如用arm-linux-gcc编译完可以放在树莓派上运行
安装完成后可以看到在指定路径下生成了我们的目标文件夹
我们要用到的就是着一些头文件
访问百度
#include <stdio.h>
#include <curl/curl.h>
#define true 1
#define false 0
typedef unsigned int bool;
bool getUrl(char *filename)
{
CURL *curl;
CURLcode res;
FILE *fp;
if ((fp = fopen(filename, "w")) == NULL) // 返回结果用文件存储
return false;
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: Agent-007");
curl = curl_easy_init(); // 初始化
if (curl)
{
//curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");// 代理
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);// 改协议头
curl_easy_setopt(curl, CURLOPT_URL,"http://www.baidu.com");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); //将返回的http头输出到fp指向的文件
curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp); //将返回的html主体数据输出到fp指向的文件
res = curl_easy_perform(curl); // 执行
if (res != 0) {
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
fclose(fp);
return true;
}
}
int main(void)
{
getUrl("/tmp/get.html");
}
这里要注意的是,C语言中没有bool这个变量,c++才会有
所以要用typedef来定义这个变量
编译
gcc demo1.c -I ~/tools/curl-7.71.1/_install/include/ -L ~/tools/curl-7.71.1/_install/lib/ -lcurl
配置临时环境变量
export LD_LIBRARY_PATH=~/tools/curl-7.71.1/_install/lib/
现象
vim /tmp/get.html
在函数指定文件夹中可以看到拿到的数据
前几行可以参考https://blog.csdn.net/qq_28258885/article/details/112093574
如第一行为
- 协议版本
- 访问成功的状态码
- 状态码的解释
后面这些就是百度的代码
打开百度,右键–查看网页源码
发现一致
用户界面只是使用前端技术将这些代码排版过的