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 ConsoleApplication1
{
class City
{
public string getCityUrl(string City)
{
Encoding gb2312 = Encoding.GetEncoding("gb2312");
string str = System.Web.HttpUtility.UrlEncode(City, gb2312);
//http://php.weather.sina.com.cn/search.php?city=%CE%E4%BA%BA&c=1&dpc=1
string CityUrl = "http://php.weather.sina.com.cn/search.php?city=" + str + "&c=1&dpc=1";
//Console.WriteLine(CityUrl);
//Console.ReadKey();
return CityUrl;
}
public string getHtmlCode(string url)
{
WebClient webclient = new WebClient();
webclient.Encoding = Encoding.Default;
string htmlcode = webclient.DownloadString(url);
return htmlcode;
}
public string getWeather(string city)
{
string url = getCityUrl(city);
string str = "";
Lexer lexer = new Lexer(getHtmlCode(url));
Parser myparser = new Parser(lexer);
NodeFilter filter = new HasAttributeFilter("class", "title-s1");
NodeFilter filter1 = new NodeClassFilter(typeof(Div));
NodeFilter filter2 = new NodeClassFilter(typeof(Span));
NodeList nodelist = myparser.ExtractAllNodesThatMatch(filter);
nodelist = nodelist.ExtractAllNodesThatMatch(filter1, true);
nodelist = nodelist.ExtractAllNodesThatMatch(filter2, true);
str = nodelist.ElementAt(0).ToPlainTextString();
//str = str.Replace(" ", "");
Console.WriteLine(str.ToString());
Console.ReadKey();
return str;
}
}
}