荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Junhot (倚浩), 信区: Visual
标  题: [转载] 一个web service 的例子
发信站: 荔园晨风BBS站 (Wed Jun  6 08:03:55 2001), 转信


发信人: kemhym (kemhym), 信区: DotNET
标  题: 一个web service 的例子
发信站: BBS 水木清华站 (Wed May 30 01:19:09 2001)

今天做了一个web service 的例子。功能是从特定的网页上自动下载
指定的消息,测试用的网页时是用新浪的科技新闻网页,web service
把新闻的条目和新闻的内容下载到本地机上并用xml保存。
因为用web service 运行的话速度太慢,总是说连接超时,所以我把
他改为winform程序了,有兴趣的同学可以试试改得完善些;
主要程序段如下:
public string strURLStartFlag="<li><a href=\"";
public string strURLEndFlag="\"";
public string strTitleStartFlag="blank>";
public string strTitleEndFlag="</a>";
public string strTextStartFlag="<tr><td class=l17>";
public string strTextEndFlag="href=http://stat.sina.com.cn/";
public string strTitleURL="http://tech.sina.com.cn/topnews.shtml";
protected void GetHotNews()
{
        XmlDocument doc=new XmlDocument();
        doc.Load("e:/gethotnews.xml");
        DocumentNavigator nav=new DocumentNavigator(doc);
        nav.MoveToDocumentElement();
        nav.MoveToLastChild();
        int iURLStartFlag=0;
        int iURLStartPosition=0;
        int iURLEndFlag=0;
        int iTitleStartFlag=0;
        int iTitleEndFlag=0;
        int iTitleStartPosition=0;
        int iTextStartFlag=0;
        int iTextEndFlag=0;
        int iTextStartPosition=0;
        string strTextUrl;
        string url="";
        string title="";
        string content="";
        string strTitleContent=GetHtmlContent(strTitleURL);
        int iTitleContent=strTitleContent.Length;
        int pos=0;

        while(pos<iTitleContent)
        {
                iURLStartFlag=strTitleContent.IndexOf(strURLStartFlag,pos);
                if(iURLStartFlag==-1)
                {
                        doc.Save("e:/gethotnews.xml");
                        return ;
                }

                iURLStartPosition=iURLStartFlag+strURLStartFlag.Length;
                iURLEndFlag=strTitleContent.IndexOf (strURLEndFlag,
iURLStartPos;
                if(iURLEndFlag==-1)
                {
                        doc.Save("e:/gethotnews.xml");
                        return ;
                }

                url=strTitleContent.Substring(iURLStartPosition,
iURLEndFlag-iURtion);
                pos=iURLEndFlag;
                //--------------------
                iTitleStartFlag=strTitleContent.IndexOf(strTitleStartFlag,pos);
                if(iTitleStartFlag==-1)
                {
                        doc.Save("e:/gethotnews.xml");
                        return;
                }
                iTitleStartPosition=iTitleStartFlag+strTitleStartFlag.Length;
                iTitleEndFlag=strTitleContent.IndexOf (strTitleEndFlag,
iTitleStPosition);
                if(iTitleEndFlag==-1)
                {
                        doc.Save("e:/gethotnews.xml");
                        return;
                }
                title=strTitleContent.Substring(iTitleStartPosition,
iTitleEndFltartPosition);
                pos=iTitleEndFlag;
                //-------------------------
                strTextUrl=GetNewsTextURL(strTitleURL,url);
                string strTextContent=GetHtmlContent(strTextUrl);
                iTextStartFlag=strTextContent.IndexOf(strTextStartFlag);
                if(iTextStartFlag==-1)
                {
                    continue;
                }
                iTextStartPosition=iTextStartFlag+strTextStartFlag.Length;
                iTextEndFlag=strTextContent.IndexOf (strTextEndFlag,
iTextStartP;
                if(iTextEndFlag==-1)
                {
                        continue;
                }
                content=strTextContent.Substring(iTextStartPosition,
iTextEndFlartPosition);
                //--------------------
                nav.Insert(System.Xml.TreePosition.After,System.Xml.
XmlNodeTypenews","","");
                nav.Insert(System.Xml.TreePosition.FirstChild,System.Xml.
XmlNodent ,"url","","");
                nav.InnerText =strTextUrl;
                nav.Insert(System.Xml.TreePosition.After,System.Xml.
XmlNodeType"title","","");
                nav.InnerText=title;
                nav.Insert(System.Xml.TreePosition.After,System.Xml.
XmlNodeType"content","","");
                nav.InnerXml="<![CDATA["+content+"]]>";
                nav.MoveToParent();

                strTextUrl="";
                title="";
                content="";
                }
                doc.Save("e:/gethotnews.xml");
}
                public string  GetNewsText(string TextStartFlag,
string TextEndFlag,string TextURL)
                {
                        string HtmlContent=GetHtmlContent(TextURL);
                        int iTextStartFlag=HtmlContent.
IndexOf(TextStartFlag);
                        if(iTextStartFlag==-1)
                        {
                                return "";
                        }
                        int iTextStartPosition=iTextStartFlag+TextStartFlag.
Len;
                        int iTextEndFlag=HtmlContent.IndexOf (TextEndFlag,
iText;
                        if(iTextEndFlag==-1)
                        {
                                return "";
                        }
                        return HtmlContent.Substring(iTextStartPosition,
iTextEnosition);
                }
                public string GetHtmlContent(string Url)
                {
                        System.Text.StringBuilder strSource=new System.Text.
Str;
                        try
                        {
                                System.Net.WebRequest wReq;
                                wReq=System.Net.WebRequestFactory.Create(Url);
                                System.Net.WebResponse wResp=wReq.GetResponse();
                                System.IO.StreamReader sr=new System.IO.
StreamRtream(),Encoding.Default);
                                string strTemp="";
                                while((strTemp=sr.ReadLine())!=null)
                                {
                                        strSource.Append(strTemp);
                                }
                                sr.Close();
                        }
                        catch(Exception err)
                        {

                        }
                        return strSource.ToString();

                }

--
                         战意渐去,红尘琐事不关己,归隐故里。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.211]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店