【C++风云录】数据收集之道:用C++库打造高效的网络爬虫和数据抓取工具
#include <iostream>
#include <curl/curl.h> // 假设已经安装了libcurl库
// 回调函数,用于接收从服务器端获取的数据
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
// 使用libcurl进行网络请求的函数
std::string download_content(const std::string &url) {
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
}
curl_easy_cleanup(curl);
}
return readBuffer;
}
int main() {
std::string url = "http://example.com"; // 替换为你想抓取的网站
std::string content = download_content(url);
std::cout << content << std::endl;
return 0;
}
这段代码展示了如何使用libcurl库来简单地下载网页内容。首先初始化CURL对象,设置相关的选项,如URL和回调函数,然后执行网络请求,并在完成后清理CURL对象。这是网络爬虫和数据抓取的一个基本例子,实际应用中可能需要处理更复杂的情况,比如Cookies、HTTP头部、认证等。
评论已关闭