可不可以写一段c++爬虫的样例代码?
时间: 2024-12-06 09:22:56 浏览: 19
当然可以。以下是一个简单的 C++ 爬虫样例,使用了 libcurl 和 stringstream 进行基础的 HTTP GET 请求和网页内容读取。这个例子并不包含完整的 HTML 解析,仅用于展示基本的网络请求过程:
```cpp
#include <iostream>
#include <string>
#include <curl/curl.h>
size_t writeCallback(char* ptr, size_t size, size_t nmemb, void* userdata) {
std::string* response = static_cast<std::string*>(userdata);
response->append(ptr, size * nmemb);
return size * nmemb;
}
int main() {
CURL* curl;
CURLcode res;
std::string response;
// 初始化 libcurl
curl_global_init(CURL_GLOBAL_DEFAULT);
// 创建一个会话
curl = curl_easy_init();
if (curl) {
// 设置 URL
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
// 设置回调函数,将服务器响应存储到字符串中
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
// 执行请求并获取结果
res = curl_easy_perform(curl);
// 检查错误
if (res != CURLE_OK)
std::cerr << "Error: " << curl_easy_strerror(res) << std::endl;
// 清理资源
curl_easy_cleanup(curl);
}
// 输出响应
std::cout << "Response:\n" << response << std::endl;
// 关闭 libcurl
curl_global_cleanup();
return 0;
}
```
请注意,为了编译这段代码,你需要安装 libcurl,并链接它到你的项目中。此外,对于复杂的爬虫项目,你还需要考虑添加错误处理、超时设置、Cookie 管理等功能,以及使用专门的 HTML 解析库(如 pugixml 或 tinyxml2)来解析抓取的内容。
阅读全文