荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店