我想用C# 提取网页中的文本文字,请问要用什么方法啊?找了很多好像有关于IHTMLDocument2 和 Htmldocument 希望有好心人能提供完整点的代码。

解决方案 »

  1.   


    webBrowser1.Document.Body.InnerText
      

  2.   

    提取什么样的文字?
    包含HTML??还是什么.
      

  3.   

    using System.IO;
    using System.Net;Stream instream = null;
    StreamReader sr = null;
    HttpWebResponse response = null;
    HttpWebRequest request = null;
    request = WebRequest.Create("http://www.sina.com.cn") as HttpWebRequest;
    response = request.GetResponse() as HttpWebResponse;
    instream = response.GetResponseStream();
    sr = new StreamReader(instream, Encoding.UTF8);
    //返回结果网页(html)代码 
    return sr.ReadToEnd();
      

  4.   

    如: <td></td>中间的文本文字啊
      

  5.   

    三楼的应该是提取整个网页吧,这样的我已经实现了。还有devsdk说的用正则我已经做过了,是能实现。但是我想先构造DOM树,再提取文本。
      

  6.   

    终于自己弄出来了,其实也挺简单,然后下面我把代码共享一下,谢谢解答的人。我是先扫描浏览器,然后将开着的网页截取,用IHTMLDocument3 这个类做的内容提取,代码如下:SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
                string filename;
                foreach (SHDocVw.InternetExplorer ie in shellWindows)
                {
                    filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
                    if (filename.Equals("iexplore") || filename.Equals("ttraveler"))
                    {
                        Console.WriteLine("Web Site: {0}", ie.LocationURL);
                        mshtml.IHTMLDocument2 htmlDoc = ie.Document as mshtml.IHTMLDocument2;                    Console.WriteLine("文件 Snippet: {0}", ((htmlDoc != null) ? htmlDoc.body.outerHTML.Substring(0, 100) : "***Failed***"));
                        Console.WriteLine("{0}{0}", Environment.NewLine);                    mshtml.IHTMLDocument3 htmlDoc3 = ie.Document as mshtml.IHTMLDocument3;
                        mshtml.IHTMLElementCollection hec = htmlDoc3.getElementsByTagName("TD");
                        
                        foreach (mshtml.IHTMLElement he in hec)
                        {
                            Console.WriteLine(he.innerText);
                        }
                      //  mshtml.IHTMLElement he = (mshtml.IHTMLElement)hec.item(0, 0);
                      
                         Console.ReadKey();
                    }
                  
                }
      

  7.   

    可以试试用正则表达式来分析文本!.net库里的正则表达式还是很好用的!
      

  8.   

    呵呵,已经用过了,但是觉得有点死板,不知道是不是同意我的说法。
    比如说我想提取具体的标签"td"下的文本,我只能先提取都是 <td>的所有标签,然后去掉html代码,
    但是我要提取很多不同类型的文本,这样的话不同html网页框架是不一样的啊。包含文本的标签也是不一样的啊。我就要写很多判断和分析。
    感觉这样不灵活。不知道大虾有没有好的建议呢??