马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
需要剖析对应的HTML源码:- <div class="left">
- <div class="wea_alert clearfix">
- <ul>
- <li>
- <a href = "https://tianqi.moji.com/aqi/china/jiangxi/hukou-county" >
- < span class="level level_2">
- <img src = "https://h5tq.moji.com/tianqi/assets/images/aqi/2.png" alt="88 良">
- </span>
- <em>88 良</em>
- </a>
- </li>
- </ul>
- </div>
- <div class="wea_weather clearfix">
- <em>30</em>
- <span><img src = "https://h5tq.moji.com/tianqi/assets/images/weather/w1.png" alt="多云"></span>
- <b>多云</b>
- <strong class="info_uptime">今天17:04更新</strong>
- </div>
- <div class="wea_about clearfix">
- <span>湿度 50%</span>
- <em>南风3级</em>
- </div>
- <div class="wea_tips clearfix">
- <span>今日天气提示</span>
- <em>略微偏热,注意衣物变化。</em>
- </div>
- </div>
- <div class="right">
- <div class="wea_info_avator">
- <img src = "https://h5tq.moji.com/tianqi/assets//images/avator/icon/2.png" alt="墨迹天气 小墨哥">
- <div id = "windows_download" >
- < img src="https://h5tq.moji.com/tianqi/assets//images/icon/avator_windows.png" height="35" alt="Windows 下载">
- <a href = "http://download.moji001.com/mojiapp/windoz/MoWeatherInstall_1.8.1.1.exe" target="_blank">Windows 下载</a>
- </div>
- </div>
- </div>
复制代码 吸收数据的对象- public class MainInfos
- {
- /// <summary>
- /// 日期
- /// </summary>
- public string TodayDate { get; set; } = DateTime.Now.ToString("yyyy年MM月dd日");
- /// <summary>
- /// 温度
- /// </summary>
- public string WenduStr { get; set; }
- /// <summary>
- /// 风向
- /// </summary>
- public string FengsuStr { get; set; }
- /// <summary>
- ///气压
- /// </summary>
- public string QiyaStr { get; set; }
- /// <summary>
- /// 湿度
- /// </summary>
- public string ShiduStr { get; set; }
- /// <summary>
- /// 降水
- /// </summary>
- public string JiangshuiStr { get; set; }
- /// <summary>
- ///空气指数
- /// </summary>
- public string KongqiZhishuStr { get; set; }
- /// <summary>
- /// 天气
- /// </summary>
- public string TianqiStr { get; set; }
- /// <summary>
- /// 更新时间
- /// </summary>
- public string GenxinShijianStr { get; set; }
- /// <summary>
- /// j今日提示
- /// </summary>
- public string JinriTishi { get; set; }
- /// <summary>
- /// 当前天气的图标地址
- /// </summary>
- public string ImagePath { get; set; }
-
- }
复制代码 收罗数据的方法:- /// <summary>
- /// 读取天气数据
- /// </summary>
- public static class ReadFromWeb
- {
- public static MainInfos GetFromUrl(string Url)
- {
- ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
- try
- {
- HtmlWeb web = new HtmlWeb();
- HtmlAgilityPack.HtmlDocument doc = web.Load(Url);
- HtmlNode rootnode = doc.DocumentNode;
- MainInfos ThisMainInfos = null;
- HtmlNodeCollection GetUrlInfoNodes = doc.DocumentNode.SelectNodes("//div[@class='wrap clearfix wea_info']");
- if (GetUrlInfoNodes != null)
- {
- ThisMainInfos = new MainInfos();
- HtmlNode ThisMainNode = GetUrlInfoNodes.FirstOrDefault();
- string InnerStr = ThisMainNode.InnerHtml;
- //截取出来进行数据分析重新创建一个操作
- HtmlDocument DOCJiequ = new HtmlDocument();
- DOCJiequ.LoadHtml(InnerStr);
- ///获取空气指数
- HtmlNodeCollection NodesKongqizhishu = DOCJiequ.DocumentNode.SelectNodes("//div[@class='wea_alert clearfix']");
- if (NodesKongqizhishu!=null && NodesKongqizhishu.Count >0 )
- {
- HtmlNode KongqiZhishuNode = NodesKongqizhishu[0];
- ThisMainInfos.KongqiZhishuStr = KongqiZhishuNode.InnerText.Replace("\r\n","").Replace(" ","").Trim();
- }
- ///获取天气温度 图标
- HtmlNodeCollection NodesTianqiWendu = DOCJiequ.DocumentNode.SelectNodes("//div[@class='wea_weather clearfix']");
- if (NodesTianqiWendu != null && NodesTianqiWendu.Count > 0)
- {
- HtmlNode ThisWenduNode = NodesTianqiWendu[0];
- HtmlNodeCollection WenduShowNodes = ThisWenduNode.ChildNodes;
- HtmlNode WenduCanshuNode = WenduShowNodes.Where(x => x.Name == "em").FirstOrDefault();//温度
- if (WenduCanshuNode!=null )
- {
- ThisMainInfos.WenduStr = WenduCanshuNode.InnerText;
- }
- HtmlNode TianqiCanshuNode = WenduShowNodes.Where(x => x.Name == "b").FirstOrDefault();//天气
- if (TianqiCanshuNode != null)
- {
- ThisMainInfos.TianqiStr = TianqiCanshuNode.InnerText;
- }
- HtmlNode TianqiTubiaoCanshuNode = WenduShowNodes.Where(x => x.Name == "span").FirstOrDefault();//天气图标
- if (TianqiTubiaoCanshuNode != null)
- {
- HtmlNode TianqiImageCanshuNode = TianqiTubiaoCanshuNode.FirstChild;//获取image标签
- ThisMainInfos.ImagePath =TianqiImageCanshuNode.GetAttributeValue("src",string.Empty);
- }
- HtmlNode GenxinShijianCanshuNode = WenduShowNodes.Where(x => x.Name == "strong").FirstOrDefault();//更新时间
- if (GenxinShijianCanshuNode != null)
- {
- ThisMainInfos.GenxinShijianStr = GenxinShijianCanshuNode.InnerText;
- }
- }
- ///获取湿度 风力
- HtmlNodeCollection NodesShiduFengli= DOCJiequ.DocumentNode.SelectNodes("//div[@class='wea_about clearfix']");
- if (NodesShiduFengli!=null && NodesShiduFengli.Count > 0)
- {
- HtmlNode ThisShiduFenliNode = NodesShiduFengli[0];
- HtmlNode ShiduNode = ThisShiduFenliNode.ChildNodes.Where(x=>x.Name == "span").FirstOrDefault() ;//湿度
- if (ShiduNode != null)
- {
- ThisMainInfos.ShiduStr = ShiduNode.InnerText;
- }
- HtmlNode FenliNode = ThisShiduFenliNode.ChildNodes.Where(x => x.Name == "em").FirstOrDefault();//风力
- if (FenliNode != null)
- {
- ThisMainInfos.FengsuStr = FenliNode.InnerText;
- }
- }
- ///获取今日提示
- HtmlNodeCollection NodesJinritishi = DOCJiequ.DocumentNode.SelectNodes("//div[@class='wea_tips clearfix']");
- if (NodesJinritishi != null && NodesJinritishi.Count > 0)
- {
- HtmlNode ThisJinriTishiNode = NodesJinritishi[0];
- HtmlNode JinriTishiNode = ThisJinriTishiNode.ChildNodes.Where(x => x.Name == "em").FirstOrDefault();//今日提示
- if (JinriTishiNode != null)
- {
- ThisMainInfos.JinriTishi = JinriTishiNode.InnerText;
- }
- }
- }
- return ThisMainInfos;
- }
- catch (WebException ex)
- {
- //连接失败
- return null;
- }
- }
- }
复制代码 应用方法:- MainInfos ThisModel = ReadFromWeb.GetFromUrl("https://tianqi.moji.com/weather/china/jiangxi/hukou-county");
- if (ThisModel!=null )
- {
- MainGrid.DataContext = ThisModel ;
- }
复制代码 |