2 Mart 2015 Pazartesi

C# Siteden Html Okuma


     Kovan Takip adlı çalışmamda bütün illerin hava durum bilgisini alıp program içerisinde göstermiştim. Bunu yaparken de Meteoroloji Genel Müdürlüğünün sitesinden Html i okuyup içerisinden derece ve resmi çekmiştim. Burada hava durum bilgisi veren web servis kaynaklarını kullansam daha mantıklı olabilirdi ancak o dönem web servis olayından heberim yoktu.



     Uygulama yukarıdaki gördüğünüz gibi çalışıyor. Basit bir uygulama , Request-Response mantığı ile Html verileri okuyup işimize yarayan kısımları ayrıştırıyoruz.



    Bu uygulamayı yaklaşık 1.5 yıl önce yapmıştım. Şimdi denedim hala çalışıyor. Meteoroloji web sayfasını yenilemediği sürece de çalışmaya devam edecektir. Bu uygulamanın kodunu aşağıdan inceleyebilirsiniz , çalışan uygulamayı da en alttaki linkten indirebilirsiniz.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private static string BilgiCek(string url)
        {
            StringBuilder sb = new StringBuilder();
            byte[] buf = new byte[8192];
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream resStream = response.GetResponseStream();
            string tempString = null;
            int count = 0;
            do
            {
                count = resStream.Read(buf, 0, buf.Length);
                if (count != 0)
                {
                    tempString = Encoding.UTF8.GetString(buf, 0, count);
                    sb.Append(tempString);
                }
            }
            while (count > 0);
            return sb.ToString();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
        private static string ToClearText(string tarih)
        {
            return Regex.Replace(tarih, @"<(.|\n)*?>", string.Empty);
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string url = "http://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m="+comboBox1.Text;
            string html = BilgiCek(url);
            label2.Text = "";
            string link ;
            //string havadurumu = @"";
            // string havadurumu = @""; 
            string havadurumu = @"", pos1);
            string derece = html.Substring(pos1, pos2 - pos1);
            //string sondurum = @"";
            int pos3 = html.IndexOf(durum);
            int pos4 = html.IndexOf("
", pos3);
            string ddeg = html.Substring(pos3, pos4 - pos3);
            ddeg = ToClearText(ddeg);
            string[] pars2 = ddeg.Split("".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            string[] pars = derece.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            label1.Text = comboBox1.Text;
            string dene = pars[0];
            int i = 0;
            char[] d = null;
            while(dene[i] != '#')
            {
                label2.Text += dene[i];
                i++;
            }
            label3.Text = "° C";
        }
        Bitmap Resim(string Url)
        {
            WebRequest rs = WebRequest.Create(Url);
            return (Bitmap)Bitmap.FromStream(rs.GetResponse().GetResponseStream());
        }
    }
}




0 yorum:

Yorum Gönder