Asp.NET İle BOT Yapımı (Sadece Belli Etiketler Arası Çekme) örneğin bir haber sayfasından öne çıkan haberleri almak istiyorsunuz. Bunun için bir önceki konuda anlatılanlara ek olarak bazı string fonksiyonlardada yararlanarak bir haber botu yapabiliriz.

Bunun için sayfaya bir adet buton, 1 adet text kutusu, 1 adet label nesnesi yerleştirdim.

  • haberbotyapimi.aspx sayfasındaki nesnelerin kodları;

<asp:TextBox runat=”server” id=”txtAdres”></asp:TextBox>

<asp:Button ID=”btnVeriCek” runat=”server” Text=”Veri Çek”
onclick=”btnVeriCek_Click” />
<br />
<asp:Label ID=”lblGelenVeri” runat=”server”></asp:Label>

bothabercek

  • haberbotyapimi.aspx.cs sayfamızda uygun namespaceleri eklemeyi unutmayın;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Globalization;
using System.IO;
using System.Text;

// daha sonra butona tıkladığınızda oluşan btnVeriCek_Click olayındaki kodlar şöyle olacak.

protected void btnVeriCek_Click(object sender, EventArgs e)
{
string adresal = “http:// + txtAdres.Text;
WebResponse GelenCevap;
WebRequest adresistegi = HttpWebRequest.Create(adresal);
GelenCevap = adresistegi.GetResponse();
//CultureInfo tr = new CultureInfo(“tr-TR”);//dil ayarı yapmak için kapattığım bu iki satırda kullanılabilir. ama ben aşağıdaki gibi kullandım
//StreamReader SayfaKaynakBilgisi = new StreamReader(GelenCevap.GetResponseStream(), Encoding.GetEncoding(tr.TextInfo.ANSICodePage));
StreamReader SayfaKaynakBilgisi = new StreamReader(GelenCevap.GetResponseStream(), Encoding.GetEncoding(“utf-8”));//dil problemi olmaması için sayfaların kaynak kodundan kullandığı sistemi öğrenin ve yazın (Encoding.GetEncoding(“ISO-8859-1”) )kaynak kodu alma
string kaynakbilgiyial = SayfaKaynakBilgisi.ReadToEnd();
int HaberBaslangic = kaynakbilgiyial.IndexOf(“<td class=\”ana_haber_adi\”>”)-137;//Başlangıç noktası kaynak sayfamdaki kodlarda belirleyici etiket sayısı azdı onun için haberlerin bulunduğu belirleyici noktadan <table> etiketine kadar geri gidip tablo başına ulaşmaya çalıştım. burası alınacak sayfanın kaynak kodlarına göre değişir.
int HaberBitis = kaynakbilgiyial.Substring(HaberBaslangic).IndexOf(“SON HABER YORUMLARI”)-125;//yukarıdaki açıklama burası içinde geçerli. burada yukara belirlenen başlangıç noktsından itibaren nereye kadar alınacağı  belrleniyor. burası alınacak sayfanın kaynak kodlarına göre değişir.
string IstenenBolum =kaynakbilgiyial.Substring(HaberBaslangic, HaberBitis);
IstenenBolum = IstenenBolum.Replace(“src=\””, “src=\”http://www.turkegitimsen.org.tr/);//sayfada yollar kısa yazılmıştı bende resimleri göstersin diye tüm yolları uzun olarak değiştirdi. burası alınacak sayfanın kaynak kodlarına göre değişir.
lblGelenVeri.Text = IstenenBolum;
}

Ben denedim güzel bir uygulama oldu. Yukarıdaki örnek dil ayarları ve etiket aralığı kısmı alınacak kaynak sayfa  ya göre bakılarak değiştirilmeli ve dil ayarları da sayfaya göre ayarlanmalıdır.

Reklamlar