最近在看关于搜索引擎方面的书籍。不可避免要处理HTMLtoTXT,从《搜索引擎技术》一书中看到了写关于HTML到文本的转换算法。
于是自己写了一个测试程序。效果感觉不错,总体而言是利用字符串查找实现的。即找到一个"<"立马找下一个">"然后去掉中间内容。
程序还是有很多的问题。首先是 "<"的层数问题,如果遇到多层的不规格的html代码 解析 就乱套了。
以后得多改进~
可以使用栈来实现<<的嵌套提取.什么?如果有不成对的< > 咋办?
只能说错误了~
#include "stdafx.h" #include "stdlib.h" #include <iostream> #include <fstream> using namespace std;
int main(int argc, char* argv[]) { ifstream file; file.open("d:\\1.txt",ios::in);//默认HTML文件位置 file.seekg(0,ios::beg); int begin = file.tellg(); file.seekg(0, ios::end ); int theend = file.tellg(); int length = theend - begin;//得到文件长度 file.seekg(0,ios::beg); char* temp = new char[length]; file.read(temp,length); file.close(); string str(temp); int i = 0; int first; string ttt=""; while (i < str.length()) { if(str[i] == '>')// '>' 和'<' 之间的是有用文本 { first = i; while (str[i] != '<'&& i < str.length()) { i++; } if(i == str.length()) { delete temp; return 0; } else { if(first != i) { string tt = str.substr(first+1,i-first-1); cout<<tt.c_str(); } }
} else { i++; } }
} 可以利用stach实现提取 link 等等~~
|
阅读(690) | 评论(1) | 转发(0) |