Turning gears are the logo of co-scripts

Projemize bir webbrowser kontrolü eklediğimizde onu tıpkı bir web browser gibi yönlendirebiliriz (.navigate(string url) .

Ayrıca mshtml ile web browser kontolünün içine yüklenen içeriğini ele alabilir ve elementler arasında DOM hiyerarşisini kullanarak istediğimiz bilgiyi çekebilir veya sayfa içine müdahelelerde bulunabiliriz (form doldurma ve submit vb.). 

Doğukan isimli bir arkadaşın (:oP) , yeni başladığım bu C# işinde bana bir soru sormasıyla oluşan sabahlama sürecinde birden çok yöntemi olduğunu öğrendiğim web sayfası ele alma olayına en basit olan çözümü size iletiyorum.

Wellformed olmayan (element hiyerarşisi adam gibi olmayan ve standartlara uymayan sayfa)  web içeriğinde harici paketler kullanılıyor. Bunlardan birisi olan HTMLAgilityPack'i daha sonraki bir yazıya bırakıyorum. (OpenSource olan paketin sayfası burası).

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using mshtml;

namespace SelectBoxDren
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

                private void button2_Click(object sender, EventArgs e)
                {
                    comboBox2.Items.Clear();
                    webBrowser1.Navigate(hedefAdres.Text);
                }

                private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
                {
                    if (webBrowser1.Document != null)
                    {
                        HtmlElementCollection selectElems = webBrowser1.Document.GetElementsByTagName("select");
                        foreach (HtmlElement selElem in selectElems)
                        {
                            comboBox2.Items.Add(selElem.Id);
                        }

                    }

                }
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
                {
                    int sira;
                    richTextBox1.Text = '';
                    string secimId = comboBox2.SelectedItem.ToString();
                    HtmlElement sSelect = webBrowser1.Document.GetElementById(secimId);
                    for(sira=0;sira < sSelect.children.count; sira++ )
{
richTextBox1.Text += sSelect.Children[sira].InnerText + Environment.NewLine;
                    }
                }



        }
    }

co-scripts tag image webbrowsermshtmlhtmlelementhtmlparsing
ID:220 | Okunma:5573