C++ 使用Htmlcxx解析Html内容(VS编译库文件)

1.下载Htmlcxx,http://sourceforge.net/projects/htmlcxx/

2.解压htmlcxx-0.85.tar.gz

3.打开htmlcxx.vcproj,注意是htmlcxx.vcproj,不是下面的htmlcxxapp.vcproj

4.使用VS打开htmlcxx.vcproj,需要对项目进行转换

5.选择编译模式:Debug或Release模式,具体由需要使用到Htmlcxx库文件的项目的编译模式决定,但注意Debug对Debug,Release对Release,不要混乱

6.右击htmlcxx,选择属性,可以看到运行库默认的是”多线程调试/MTD“:

7.具体选择运行库时,由由需要使用到Htmlcxx库文件的项目的运行库决定,由于本人项目使用的是”多线程调试 DLL (/MDd)“,故选择”多线程调试 DLL (/MDd)“进行编译

8.报错:

9.排错:

改成

10.在所开发项目文件夹中,新建”htmlcxx“文件,里面添加两个子文件夹”lib“和”include“

11.将编译好的htmlcxx.lib(Debug或者Release,由htmlcxx编译模式决定)拷贝到lib文件夹,将html文件夹中所有的.h头文件和ParserSax.tcc添加到include文件夹

12.选择所开发项目的项目属性,添加库文件htmlcxx.lib到项目中(VC++目录下的库目录中添加htmlcxx.lib路径即可)

13.所开发的项目的头文件中添加以下内容:

#include <string>
#include "htmlcxx/include/ParserDom.h"

using namespace std;
using namespace htmlcxx;

#pragma comment(lib,"htmlcxx.lib")

14.具体使用代码:

void NuistMoney::GetLogWeekTxt()
{
	if (logined==true)
	{
		logWidget->clear();
		lbmessage->setText(tr("正在查询本周消费,请稍候..."));
		QString data=GetToAllNet(tr("http://www.**************.com.cn"));
		string html=data.toStdString();
		HTML::ParserDom parser;
		tree<HTML::Node> dom = parser.parseTree(html);
		tree<HTML::Node>::iterator it ;
		tree<HTML::Node>::iterator end;

		//输出所有的文本节点
		it= dom.begin();
		end= dom.end();
		QString str;
		QString str1;
		QString str2;
		for(; it != end; ++it)
		{
			if (strcasecmp(it->tagName().c_str(), "td") == 0)//首先判断是否是td字段
			{
				it+=1;//如果是td字段,则读取下一个字段的值,<td>字段1</td><td>字段2</td>,获取字段2
				if ((!it->isTag()) && (!it->isComment()))
				{
					if (it->text()!=" ")
					{
						str1=QString::fromStdString(it->text()).trimmed();
					}
				}
				if (str1==tr("交易金额")||str1==tr("卡余额"))
				{
					it+=5;
				}
				else
				{
					it+=3;
				}
				str2=QString::fromStdString(it->text()).trimmed();
				str=tr("\t")+str1+tr("\t\t")+str2;
				logWidget->addItem(str);
			}
			if (str1==tr("卡余额"))
			{
				logWidget->addItem(tr(" "));
				str1.clear();
			}
		}
	}
	else
	{
		lbmessage->setText(tr("您未登陆,请您先登陆..."));
	}
}

附上htmlcxx学习资料:http://blog.csdn.net/youfangyuan/article/details/7816518

时间: 2024-10-10 13:29:32

C++ 使用Htmlcxx解析Html内容(VS编译库文件)的相关文章

vs 编译库文件 Qt编译库文件

QT 库能不能用 需要关注是minGW 还是MSVC编译的 Qt MinGW与MSVC对比  转:https://blog.csdn.net/u013185164/article/details/48160561 他们都是很好用的编译工具,但是他们兼容的并不好.当你的项目使用MinGW编译的使用,想要用一个MSVC编译生成的库时就会有问题.使用MinGW编译项目的时候,所使用的Lib也要是MinGW编译的.如果你只是开发Window平台的软件时,最好用Qt MSVC组合,这样可以使用大量的第三方

vs 编译库文件

vs编译的库文件 静态库  debug和release版本 需要分开编译,我编译和实践的结果. 但是我也发现有的debug release都用同一个(搞不清楚). 然后添加到工程应用. 静态库  附件依赖项添加 .lib 以及库目录 动态库 生成比较麻烦 引用和静态库一样多了一步  把dll 放到工程目录或者程序运行目录. 文章很详细介绍了库的生成和引用: https://www.cnblogs.com/zqh20145320/p/6772985.html 文章介绍很详细值得看 https://

用Qt写软件系列六:博客园客户端的设计与实现(用Fiddler抓包,用CURL提交数据,用htmlcxx解析HTML)

引言 博客园是本人每日必逛的一个IT社区.尽管博文以.net技术居多,但是相对于CSDN这种业务杂乱.体系庞大的平台,博客园的纯粹更得我青睐.之前在园子里也见过不少讲解为博客园编写客户端的博文.不过似乎都是移动端的技术为主.这篇博文开始讲讲如何在PC端编写一个博客园客户端程序.一方面是因为本人对于博客园的感情:另一方面也想用Qt写点什么东西出来.毕竟在实践中学习收效更快. 登录过程分析 登录功能是一个客户端程序比不可少的功能.在组装Http数据包发送请求之前,我们得看看整个登录是怎样一个过程.F

第七讲:解析邮件内容

一.JavaMail解析邮件内容的流程 二.解析邮件内容 2.1 解析普通邮件内容 如果Message.getContentType方法返回的MIME类型为"text/*"则表示邮件内容为文本内容,此时直接调用Message.getContent方法把邮件内容保存了一个String对象中输出给浏览器即可.但是现实邮件中会有HTML格式的邮件内容时,邮件发送程序为了防止有些邮件阅读软件不能显示处理HTML格式的数据,通常都会用两类型分别为"text/plain"和&q

Eclipse Oxygen(4.7.0)安装插件Eclipse Class Decompiler反编译JAR文件

引用自官方内容 Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行Debug调试. 同时还提供了在线自动查找源代码,查看Class二进制字节码的功能. Eclipse Class Decompiler对JDK的最低要求为JDK1.6, 能反编译和debug各版本的Class文件,支持JDK8的Lambda语法,同时支持中文等非Ascii码字符集的解析,支持Ecli

codeblocks + MinGW 以及vc 使用预编译头文件的方法

MinGW编译器: 1.打开工程文件,在工程文件浏览其中,在你要设置为预编译的头文件上,点击鼠标右键,选择“属性(properties)”  你会看到一个多页面的属性框,选择“构建(build)”页面,将“编译文件(complie file)”选项勾上,其默认状态为没有勾 2.从菜单->工程(project)->构建选项(build options)  会跳出一个多页面属性框,在此你选择工程全局设置(project name),注意不是调试(debug)或者发布(release),然后“编译器

eclipse里配置Android ndk环境,用eclipse编译.so文件

做Android NDK开发时,c代码需要用ndk-build来进行编译,而java代码则需要用Android sdk编译. 编译c代码有两种方法: 一.写好c代码后,然后用cygwin搭建ndk-build环境,用ndk-build来编译出相关的.so文件(libs目录)之后, 再用eclipse里去编译java程序,从而使用.so文件.该方法在上一篇搭建NDK环境有介绍. 二.利用eclipse完全可以达到编译.so的目的. 首先,先装上CDT吧,这是Eclipse的C/C++环境插件,装上

C++预编译头文件(#include &quot;stdafx.h&quot;)

来源:http://blog.sina.com.cn/s/blog_4ac766c00100qsbd.html http://blog.csdn.net/txh0001/article/details/7031058 作为一个C++菜鸟,在预编译头文件(#include "stdafx.h")上纠结了很久,今天打算彻底弄明白它. 1.预编译头文件的概念 所谓的预编译头文件,其实我们很熟悉的,这里的头文件(Microsoft Visual C++中)一般的说就是我们常见的stdafx.h

预编译文件,预编译头文件认识

一.概念:1.预编译:就是编译器首先编译某个文件(称为预编译头文件),然后将这个编译结果保存起来,之后如果有其他源文件include了这个“预编译头文件”的时候,则自动从这个编译结果提取需要的信息进行编译.2.预编译结果文件(Precompiled header file):就是那个用来保存已经编译了的符号信息的文件(.PCH作为后缀)3.生成预编译结果文件(Create Precompiled header file):我们说源文件A通过文件B“生成预编译结果文件”是指编译A的时候将其中编译B