ASP.net ile başka bir sitenin meta bilgisini alma
Merhabalar arkadaşlar.
İstek köşesinde @Cem arkadaşımızın yapmış olduğu istek üzerine bu yazımı yazıyorum. Öncelik ile ASP.Net ile başka bir sitenin meta taglarının nasıl alınacağını anlatacağım.
Bu işlemi yapmak için System.Net.WebClient sınıfı kullanılacaktır. System.Net.WebClient sınıfı uzak bir sunucudan verilerin download edilmesine olanak sağlamaktadır.İndirdiğimiz veriler içinde bizim işimize yarayan kısmını bulmak için Regex methodu kullanılacaktır. Regex.Match methodunu kullanabilmek için using System.Text.RegularExpressions referansını eklememiz gerekmektedir. Kısaca Regex.Match methodundan bahsedersek; Regex.Match methodu ile bir string içinde çok detaylı aramalar yapabilmemize olanak sağlanmaktadır.
Referanslara eklenmesi gerekiyor
using System.Text.RegularExpressions;
Title alma fonksiyonu;
protected string GetTitle(string myurl)
{
//WebClient create ediliyor.
System.Net.WebClient myclient = new System.Net.WebClient();
//myclient.DownloadString(myurl) ile sitemize bağlanıyoruz ve verilerimizi indiriyoruz.
//(@"<title>(.*?)</title>") ile title tağı arasında bulunan string değerini arıyoruz. ve bu değeri return olarak geri dönderiyoruz.
return Regex.Match(myclient.DownloadString(myurl), (@"<title>(.*?)</title>")).Groups[1].ToString();
}
Kullanımı;
protected void Page_Load(object sender, EventArgs e)
{
this.Label1.Text = GetTitle("http://www.ramazanulucay.com");
}
Bu şekilde istediğimiz diğer meta taglarıda kolaylıkla alabiliriz...
Farklı olarak Cem arkadaşımızın vermiş olduğu kodlarıda deneyebilirsiniz.
public static string otomatik_keywords_cek(string site)
{
string URL = site;
WebClient client = new WebClient();
Stream data = client.OpenRead(URL);
StreamReader reader = new StreamReader(data);
string str = "";
str = reader.ReadToEnd();
string cem = str;
cem = cem.Substring(cem.IndexOf("keywords"), cem.Length - cem.IndexOf("keywords"));
cem = cem.Replace("keywords", ""); cem = cem.Replace("/", ""); cem = cem.Replace("content=", "");
cem = cem.Replace("\", "");
string[] ycem = cem.Split('>');
return ycem[0];
}
Kolay gelsin.
Şuana kadar 2679 defa okundu.
15 Mart 2010, 03:01
Hangi kodu denediniz acaba?
10 Mart 2010, 14:18
Birşey sormak istiyorum yerine yazınca bu kod neden çalışmıyor acaba?
21 Şubat 2010, 12:31
Hangi kodu kullandın acaba Cem? Benim yaptığım yol ile mi yaptınız acaba?
17 Şubat 2010, 19:15
Hocam uzun bi aradan sonra tekrardan selamlar
yine bu işlemle uğraşmaya başladımda ben çok enteresandır facebook buna engel koymuş alamıyoruz html’yi.. farklı bir html kod veriyo :S
23 Ağustos 2009, 17:53
Merhaba Taner,
Öncelikle tam olarak nereyi almak istediğinizi anlamadım. Regex işlemi kendi başına bir işlemdir ve http://www.regular-expressions.info/ adresinde Regex(Regular Expressions) olarak koyduğun şartın ne anlama geldiğini bulabilirsiniz.
Bunun haricinde yapılan işlem şudur. Regular expressions ile bulunan bir değer varsa bunun içinde HTML var mı yok mu konrol ediyorsunuz. HTML varsa result değişkene HTML’i aktarıyorsunuz ve result değişkeninde bulunan değere replace yapıyorsunuz. Ama dediğim gibi Regex içindeki şartın ne anlama geldiğini bilemiyorum.
Kolay gelsin.
22 Ağustos 2009, 23:02
merhaba bu regex ile bir html içeriği okuyup ilgili yeri pars etmek için birşeyler deniyorum ama bu konuda pek bilgim yok aşağıdaki kod tam olarak nasıl bir işlem yapar sizce açıklayabilirseniz çok sevinirim.
string HTML = Utility.GetPageHTML(“http://www.test.com/hey?v=” + id);
Regex reg = new Regex(“t\”: \”(.*), \”hl\”");
Match result = reg.Match(HTML);
string t = result.Value.Replace(“t\”: \”", “”).Replace(“\”hl\”", “”);
string FileUrl = Utility.GetResponseLocation(“http://www.test.com/ss?tt=” + id + “&rr=” + t);
19 Haziran 2009, 08:52
reis süpersin ya
10 Haziran 2009, 18:12
Eğer bir yardımım dokunduysa ne mutlu bana
Kolay gelsin herkese
07 Haziran 2009, 17:28
Yazıya kodunuz eklendi. Teşekkürler katkılarınızdan dolayı.
07 Haziran 2009, 10:13
benim kendi denemem belkide başarısız oldu. Kodları gönderiyorum umarım arkadaşların işine yarar.
public static string otomatik_keywords_cek(string site)
{
string URL = site;
WebClient client = new WebClient();
Stream data = client.OpenRead(URL);
StreamReader reader = new StreamReader(data);
string str = “”;
str = reader.ReadToEnd();
string cem = str;
cem = cem.Substring(cem.IndexOf(“keywords”), cem.Length – cem.IndexOf(“keywords”));
cem = cem.Replace(“keywords”, “”); cem = cem.Replace(“/”, “”); cem = cem.Replace(“content=”, “”);
cem = cem.Replace(“\”", “”);
string[] ycem = cem.Split(‘>’);
return ycem[0];
}
06 Haziran 2009, 17:03
Ben bir kaç site üzerinde test ettim çalışıyordu. Çalışmanızı yollarsanız sevinirim.
İyi günler.
06 Haziran 2009, 12:25
hocam öncellikle ilgiliniz için çok teşekkür ederim. Ben diğer siteler için denediğimde olmadı. Ancak bende bu konuda bir çalışma yaptım, kendimce başarılı oldum. Dilerseniz size gönderebilirim. Burda diğer arkadaşlarla paylaşabilirsiniz sizde.
İyi Günler