在 Linux 上使用 C++ 进行网络爬虫开发,你需要遵循以下步骤:
你可以使用包管理器(如 apt、yum 或 pacman)安装这些工具和库。例如,在基于 Debian 的系统上,可以使用以下命令安装:
sudo apt-get update
sudo apt-get install g++ cmake libcurl4-openssl-dev libxml2-dev
CMakeLists.txt
的文件。这个文件将包含构建项目的配置信息。cmake_minimum_required(VERSION 3.10)
project(web_crawler)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 添加 libcurl 和 libxml2 库
find_package(CURL REQUIRED)
find_package(XML2 REQUIRED)
include_directories(${CURL_INCLUDE_DIRS} ${XML2_INCLUDE_DIRS})
add_executable(web_crawler main.cpp)
target_link_libraries(web_crawler ${CURL_LIBRARIES} ${XML2_LIBRARIES})
main.cpp
的文件,并编写以下代码:#include <iostream>
#include <string>
#include <curl/curl.h>
#include <libxml/parser.h>
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;
}
std::string fetch_url(const std::string &url) {
CURL *curl = curl_easy_init();
std::string response;
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return response;
}
void parse_html(const std::string &html) {
xmlDocPtr doc = xmlReadFile(html.c_str(), NULL, 0);
if (doc == NULL) {
std::cerr << "Error: unable to parse HTML" << std::endl;
return;
}
xmlNodePtr root = xmlDocGetRootElement(doc);
for (xmlNodePtr cur_node = root; cur_node; cur_node = cur_node->next_sibling) {
if (cur_node->type == XML_ELEMENT_NODE) {
const char *tag = cur_node->name;
std::cout << "Tag: " << tag << std::endl;
}
}
xmlFreeDoc(doc);
}
int main() {
std::string url = "https://example.com";
std::string html = fetch_url(url);
parse_html(html);
return 0;
}
这个示例代码首先使用 libcurl 库从给定的 URL 获取 HTML 内容,然后使用 libxml2 库解析 HTML 文档并打印出所有的标签。
build
的目录,然后进入该目录并运行以下命令来构建项目:mkdir build
cd build
cmake ..
make
构建完成后,你可以在 build
目录中找到名为 web_crawler
的可执行文件。运行这个文件,它将访问示例 URL(https://example.com),获取其 HTML 内容,并打印出所有的标签:
./web_crawler
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。