c++解析html

https://github.com/cejutue/cjhtmlparser

 

基于gumbo-parser 和gumbo-query 改造成为了 可以适用 Windows和Linux的 html解析库, 原gumbo为google的开源c库, 且仅仅hi吃Linux.

编译: gumbo-parser 所有文件全部直接加入到工程直接编译即可

基本用法如下:

#pragma once
#include "stdafx.h"

#include "enumtest.cpp"

#include "gumbo-parser/Selector.h"

#include "gumbo-parser/Document.h"
#include "gumbo-parser/Selection.h"
#include "gumbo-parser/Node.h"

void test_parser() {
	std::string page("

wrong linksome link

"); CDocument doc; doc.parse(page.c_str()); CSelection c = doc.find("h1 a.special"); CNode node = c.nodeAt(0); printf("Node: %s\n", node.text().c_str()); std::string content = page.substr(node.startPos(), node.endPos() - node.startPos()); printf("Node: %s\n", content.c_str()); } void test_html() { std::string page = "
1\n2\n
"; CDocument doc; doc.parse(page.c_str()); CNode pNode = doc.find("div").nodeAt(0); std::string content = page.substr(pNode.startPos(), pNode.endPos() - pNode.startPos()); printf("Node: #%s#\n", content.c_str()); } void test_escape() { std::string page = "
1\n2\n
"; CDocument doc; doc.parse(page.c_str()); CNode pNode = doc.find("span[id=\"that's\"]").nodeAt(0); std::string content = page.substr(pNode.startPos(), pNode.endPos() - pNode.startPos()); printf("Node: #%s#\n", content.c_str()); } int main() { test_parser(); test_html(); test_escape(); }

你可能感兴趣的:(C++札记,html,html解析,c++)