!Bu makale yeterli düzeyde detay içermediğinden yeni başlayanlar için uygun olmayabilir.
c#'da bir web sayfanı forma yüklemek yani chrome ya da explorer benzeri bir tarayıcı oluşturmak için webbrowser nesnesini kullanmamız gerekir. Bu nesne aracılığıyla, kolaylıkla bir web sayfasını yükleyebilir ve sayfalar arasında genizebilirsiniz. Ancak projelerde genellikle ihtiyaç duyulan nokta, yüklenen web sayfasına müdahale etmek ya da arka planda bir web sayfasını çalıştırarak sonuçları kullanıcıya iletmektir. Örneğin, google'dan arama yapmak istediğinizde, kullanıcıdan aranacak kelimeyi alıp sonuçları istediğiniz gibi manüpüle edip kullanıcıya istediğiniz şekilde gösterebilirsiniz.
Öncelikle ben aşağıdaki gibi bir fonksiyon yazdım. Bu fonksiyon, gelen adres bilgisini kontrol etmek için kullandım. Daha sonra buton'a tıkladığımda, textBox1'de yazılan adres değeri webbrowser'a yüklenecek.
private void gezin(String adres)
{
if (String.IsNullOrEmpty(adres)) return;
if (!adres.StartsWith("http://") &&
!adres.StartsWith("https://"))
{
adres = "http://" + adres;
}
try
{
webBrowser1.Navigate(new Uri(adres));
}
catch (System.UriFormatException)
{
return;
}
}
private void button1_Click(object sender, EventArgs e)
{
//webBrowser1.ScriptErrorsSuppressed = true;
gezin(textBox1.Text);
}
Yukarıdaki fonksiyonu kullanmadan doğrudan, aşağıdaki satırı da yazabilirsiniz. Buda işinizi görür.
webBrowser1.Navigate(new Uri(adres));
daha sonra web sayfası yükleme işi tamamlandığında, form üzerinde bir butona tıklayarak sayfa içerisinde yer alan istediğiniz input öğresinin içerisine istediğiniz yazıyı yazabilirsiniz. Aşağıdaki kod, yüklenen web sayfasında className'i form-control olan input'a textbox2'de yazan metni eklemek için kullanılabilir. Burada web sayfasında birden fazla input olduğu için ve elimde bir ID olmadığı için, classname üzerinden yaptım.
private void button2_Click(object sender, EventArgs e)
{
var links = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement link in links)
{
//MessageBox.Show("test");
if (link.GetAttribute("className") == "form-control")
link.InnerText = textBox2.Text;
}
}
benzer şekilde form içerisinde başka bir butona tıklayarak, web sayfasında bulunan bir butonun tıklama olayıda tetiklenebilir. Bunun için aşağıdaki gibi bir kod kullanılabilir.
private void button3_Click(object sender, EventArgs e)
{
var butons = webBrowser1.Document.GetElementsByTagName("button");
foreach (HtmlElement link1 in butons)
link1.InvokeMember("click");
}
Yukarıdaki kodları kullanarak aşağıdaki gibi bir ekran elde edebilirsiniz.
Umarım faydalı olmuştur. Selamlar.
{ webbrowser1.Navigavte("https://www.google.com/search?q=" + Textbox1.text);
Daha sonra arama sonucu parsel parsel textbox2'ye yansıtacağım
Yusuf Merhaba,
yukarıda yazdığım kod ile Google arama sonuçlarından sayfa kaynağı içerisinde h3 ün altında yazan metni veya linki almak mümkün. Umarım bu soruna cevap olur sanırım.
Merhaba Yusuf, ne yazık ki bilgim sorularına cevap verebilecek düzeyde değil, oldukça yüzeysel.