using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using Winista.Text.HtmlParser; using Winista.Text.HtmlParser.Util; using Winista.Text.HtmlParser.Http; using Winista.Text.HtmlParser.Visitors; using Winista.Text.HtmlParser.Filters; using Winista.Text.HtmlParser.Tags; using Winista.Text.HtmlParser.Lex; using Winista.Text.HtmlParser.Nodes; namespace MSNPSharpClient.TrainSearch { class TrainBackTopSearch { public string GetTrainBackTopSearch(string CityFrom, string CityTo) { GetTrainUrlAndHtmlCode getUrlAndHtmlCode = new GetTrainUrlAndHtmlCode(); string str = ""; Lexer lexer = new Lexer(getUrlAndHtmlCode.getTrainSearchHtmlCode(CityFrom, CityTo)); Parser myparser = new Parser(lexer); NodeFilter filter = new HasAttributeFilter("class", "back back_top"); NodeFilter filter1 = new NodeClassFilter(typeof(Div)); NodeList nodelist = myparser.ExtractAllNodesThatMatch(filter); nodelist = nodelist.ExtractAllNodesThatMatch(filter1, true); int m = nodelist.Count; str = nodelist.ElementAt(0).ToPlainTextString(); string strInfo = ""; Char[] c = str.ToCharArray(); if (nodelist.Count != 0) { for (int i = 0; i < c.Length; i++) { if (c[i].ToString() != "/n" && c[i].ToString() != "/t" && c[i].ToString() != "/r") { strInfo += c[i].ToString().Trim(); } } strInfo = strInfo.Replace("转让票纠错", ""); strInfo += "/n"; } else { strInfo = "抱歉,您查询的站点没有列车,请换个站点试试!"; } return strInfo; } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; namespace MSNPSharpClient.TrainSearch { class GetTrainNoHtmlCode { public string getTrainNoUrl(string TrainNo) { Encoding gb2312 = Encoding.GetEncoding("gb2312"); string strTrainNo = System.Web.HttpUtility.UrlEncode(TrainNo, gb2312); //http://skb.kuxun.cn/search.php?T=Train&OEM=&querytype=trainid&q=T176 string IDSearchUrl = "http://skb.kuxun.cn/search.php?T=Train&OEM=&querytype=trainid&q=" + strTrainNo; //Console.WriteLine(CityUrl); //Console.ReadKey(); return IDSearchUrl; } public string getTrainNoHtmlCode(string TrainNo) { string url = getTrainNoUrl(TrainNo); WebClient webclient = new WebClient(); webclient.Encoding = Encoding.UTF8; string htmlcode = webclient.DownloadString(url); return htmlcode; } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; namespace MSNPSharpClient.TrainSearch { class GetTrainUrlAndHtmlCode { public string getTrainSearchUrl(string CityFrom,string CityTo) { Encoding gb2312 = Encoding.GetEncoding("gb2312"); //string SimplifiedChinese=Strings.StrConv(City);//繁體轉換成簡體失敗 string strCityFrom = System.Web.HttpUtility.UrlEncode(CityFrom, gb2312); string strCityTo = System.Web.HttpUtility.UrlEncode(CityTo, gb2312); //http://skb.kuxun.cn/search.php?T=Train&OEM=&querytype=fromto&From=%CE%E4%B2%FD&q=%B6%AB%DD%B8 string IDSearchUrl = "http://skb.kuxun.cn/search.php?T=Train&OEM=&querytype=fromto&From=" + strCityFrom + "&q=" + strCityTo; //Console.WriteLine(CityUrl); //Console.ReadKey(); return IDSearchUrl; } public string getTrainSearchHtmlCode(string CityFrom, string CityTo) { string url = getTrainSearchUrl(CityFrom, CityTo); WebClient webclient = new WebClient(); webclient.Encoding = Encoding.UTF8; string htmlcode = webclient.DownloadString(url); return htmlcode; } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using Winista.Text.HtmlParser; using Winista.Text.HtmlParser.Util; using Winista.Text.HtmlParser.Http; using Winista.Text.HtmlParser.Visitors; using Winista.Text.HtmlParser.Filters; using Winista.Text.HtmlParser.Tags; using Winista.Text.HtmlParser.Lex; using Winista.Text.HtmlParser.Nodes; namespace MSNPSharpClient.TrainSearch { class GetTrainNo { public string GetTrainNoInfo(string TrainNo) { GetTrainNoHtmlCode getUrlAndHtmlCode = new GetTrainNoHtmlCode(); string str = ""; Lexer lexer = new Lexer(getUrlAndHtmlCode.getTrainNoHtmlCode(TrainNo)); Parser myparser = new Parser(lexer); NodeFilter filter = new HasAttributeFilter("class", "back back_top"); NodeFilter filter1 = new NodeClassFilter(typeof(Div)); NodeList nodelist = myparser.ExtractAllNodesThatMatch(filter); nodelist = nodelist.ExtractAllNodesThatMatch(filter1, true); int m = nodelist.Count; str = nodelist.ElementAt(0).ToPlainTextString(); string strInfo = ""; Char[] c = str.ToCharArray(); if (nodelist.Count != 0) { for (int i = 0; i < c.Length; i++) { if (c[i].ToString() != "/n" && c[i].ToString() != "/t" && c[i].ToString() != "/r") { strInfo += c[i].ToString().Trim(); } } strInfo = strInfo.Replace("转让票纠错", ""); strInfo += "/n"; } else { strInfo = "抱歉,您查询的车次,请换个车次试试!"; } return strInfo; } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using Winista.Text.HtmlParser; using Winista.Text.HtmlParser.Util; using Winista.Text.HtmlParser.Http; using Winista.Text.HtmlParser.Visitors; using Winista.Text.HtmlParser.Filters; using Winista.Text.HtmlParser.Tags; using Winista.Text.HtmlParser.Lex; using Winista.Text.HtmlParser.Nodes; namespace MSNPSharpClient.TrainSearch { class TrainSearch { public string GetTrainSearch(string CityFrom,string CityTo) { string strInfo=""; TrainBackTopSearch t = new TrainBackTopSearch(); string str1 = t.GetTrainBackTopSearch(CityFrom, CityTo); TrainBackSearch t1 = new TrainBackSearch(); string str2 = t1.GetTrainBackSearch(CityFrom, CityTo); strInfo = str1 + str2; return strInfo; } } }