Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39923
  • 博文数量: 11
  • 博客积分: 530
  • 博客等级: 中士
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-22 21:56
文章分类

全部博文(11)

文章存档

2010年(1)

2009年(3)

2008年(7)

我的朋友

分类: 系统运维

2008-11-24 10:39:40

   最近在看关于搜索引擎方面的书籍。不可避免要处理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) |
0

上一篇:没有了

下一篇:VC/MFC 从WebBrower 中获取 HTML 和文本

给主人留下些什么吧!~~

chinaunix网友2009-03-14 12:36:58

大哥不错!