求蜘蛛程序源码或讲哈思路

解决方案 »

  1.   

    Spider 是一种半自动的程序,因为它总是需要一个初始链接(出发点),但此后的运行情况就要由它自己决定了,蜘蛛程序会扫描起始页面包含的链接,然后访问这些链接指向的页面,再分析和追踪那些页面包含的链接。从理论上看,最终蜘蛛程序会访问到Internet上的每一个页面,因为Internet上几乎每一个页面总是被其他或多或少的页面引用。 
        你想知道的是哪个方面的应用?⑴ HTML分析 ⑵ 页面处理 ⑶ 多线程 ⑷ 确定何时完成任务.
      

  2.   

    HTML分析  页面处理 这两个
      

  3.   

    HTML解析首先创建该类的一个实例,然后将它的Source属性设置为要解析的HTML文档: ParseHTML parse = new ParseHTML();
    parse.Source = " Hello World";  接下来就可以利用循环来检查HTML文档包含的所有文本和标记。通常,检查过程可以从一个测试Eof方法的while循环开始: while(!parse.Eof())
    {
    char ch = parse.Parse();  Parse方法将返回HTML文档包含的字符--它返回的内容只包含那些非HTML标记的字符,如果遇到了HTML标记,Parse方法将返回0值,表示现在遇到了一个HTML标记。遇到一个标记之后,我们可以用GetTag()方法来处理它。 if(ch==0)
    {
    HTMLTag tag = parse.GetTag();
    }  一般地,蜘蛛程序最重要的任务之一就是找出各个HREF属性,这可以借助C#的索引功能完成。例如,下面的代码将提取出HREF属性的值(如果存在的话)。 Attribute href = tag["HREF"];
    string link = href.Value;  获得Attribute对象之后,通过Attribute.Value可以得到该属性的值。 
     页面处理 
    首先要做的是下载HTML页面,这可以通过C#提供的HttpWebRequest类实现: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_uri);
    response = request.GetResponse();
    stream = response.GetResponseStream();  接下来就从request创建一个stream流。在执行其他处理之前,要先确定该文件是二进制文件还是文本文件,不同的文件类型处理方式也不同。下面的代码确定该文件是否为二进制文件。 if( !response.ContentType.ToLower().StartsWith("text/") )
    {
    SaveBinaryFile(response);
    return null;
    }
    string buffer = "",line;  如果该文件不是文本文件,将它作为二进制文件读入。如果是文本文件,首先从stream创建一个StreamReader,然后将文本文件的内容一行一行加入缓冲区。 reader = new StreamReader(stream);
    while( (line = reader.ReadLine())!=null )
    {
    buffer+=line+"\r\n";
    }  装入整个文件之后,接着就要把它保存为文本文件。 SaveTextFile(buffer);
      

  4.   

    http://tech.ccidnet.com/art/1060/20030818/59879_1.html
      

  5.   

    codeproject.org 输入spider,一搜一大串
    有的已经很完善了