Cevap Geçmişi
26.04.17 22:33
Bunu yapabilmek için tablonun id değerini bilmen lazım. Eğer id değeri yokas tablonun HTML içinde kaçıncı tablo olduğunu bilmelisin veya tüm tabloları gezip kendi tablonu bulmalısın. Bunlar biraz daha uzun konular. Bu örnek tablonun id değerini bildiğininde değerleri nasıl alacağını gösterir. Verdiğin Örnek ...<table class="frmList" cellspacing="0" cellpadding="1" rules="all" id="dgListe" style="border-color:#CCCCCC;border-width:1px;border-style:solid;width:100%;border-collapse:collapse;">
<tbody><tr>
<td class="frmListBaslik" align="center">Sıra</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Adı</td><td class="frmListBaslik" align="center" bgcolor="#FFFF00">Soyadı</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Okul No</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">Sınıfı</td><td class="frmListBaslik" align="center">
</td><td class="frmListBaslik" align="center"> </td>
</tr><tr>
<td align="center">1</td><td align="left">
ABDULLAH</td><td align="left">ERGİ</td><td align="left">7317</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">2</td><td align="left">
AHMET</td><td align="left">GÖKLER</td><td align="left">10225</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">3</td><td align="left">
ALİ</td><td align="left">ALTUN</td><td align="left">1086</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">4</td><td align="left">
ALPER</td><td align="left">SARIGÜZEL</td><td align="left">7314</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">5</td><td align="left">
AYCAN</td><td align="left">KARAMAN</td><td align="left">10204</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">6</td><td align="left">
BEKİR</td><td align="left">ŞAL</td><td align="left">7301</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">7</td><td align="left">
BERKAY</td><td align="left">TOPAL</td><td align="left">7501</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr>
</tbody></table> Daha önce burada bulunan örneğin yerine daha otomatik bir örnek: Bu örnek alan sayısı ve alanları atlama gibi işlerde kolaylık sağlar. private void Button1_Click(object sender, EventArgs e)
{
webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
webBrowser1.Url = new Uri(@"d:\a.html");
}
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// Alan adlarını tanımla.
string[] Alanlar = new string[] { "Adi", "Soyadi", "OkulNo", "Sinifi" };
// Hangi hücrelerin kullanacağını belirleyen diziyi tanımla
// (Duruma göre arada hücre no atlanabilir. İlk hücre numarası 0'dır. Burada birinci hücre atlanıyor.)
int[] HucreNumaralari = new int[] { 1, 2, 3, 4 };
//(Alan adları dizisi ile HucreNumaralari dizisinin eleman sayısı aynı olmalı. HucreNumaralari dizisinin
// eleman sayısı fazla olursa hata çıkar.
// Başlık satırı yoksa bunu false yap.
bool BaslikSatiriVar = true;
// Bir DataTable oluştur.
DataTable dt = new DataTable();
dt.Clear();
// Alanlar dizisini gezerek her bir eleman için bir alan ekle.
foreach (string alanAdi in Alanlar)
dt.Columns.Add(alanAdi);
// Tablonun id özelliği değerinin tablom olduğunu varsayarsak.
// Tabloyu al.
HtmlElement tablo = webBrowser1.Document.GetElementById("dgListe");
// Satırları satirlar koleksiyonuna yükle.
HtmlElementCollection satirlar = tablo.GetElementsByTagName("tr");
HtmlElementCollection hucreler;
DataRow kayit;
// Satırları tek tek gez. Başlık satırı varsa 2. satırdan başla.
for (int i = BaslikSatiriVar ? 1 : 0; i < satirlar.Count; i++)
{
// DataTable için yeni bir kayıt oluştur.
kayit = dt.NewRow();
// Şimdiki satırın hücrelerini bir koleksiyona al.
hucreler = satirlar[i].GetElementsByTagName("td");
// Hücreler içinde HucreNumaralari dizisinin boyu kadar bir gezinti yap.
for (int j = 0; j < HucreNumaralari.Length; j++)
{
// Sıradaki hücre numarasını (indisini) al.
int hucreNo = HucreNumaralari[j];
// hucreler koleksiyonundaki indisi hucreNo olan alanın değerini
// kaydın j. alanına ata.
kayit[j] = hucreler[hucreNo].InnerText;
// veya kısaca.
// kayit[j] = hucreler[HucreNumaralari[j]].InnerText;
}
dt.Rows.Add(kayit);
}
// Olay dinleyiciyi kaldır.
webBrowser1.DocumentCompleted -= WebBrowser1_DocumentCompleted;
// Buradan sonra DataTable ile istediğini yapabilirsin.
// Örneğin forma bir DataGridView koy. Alttaki satır kayıtları görüntüleyecektir.
dataGridView1.DataSource = dt;
}
Oluşturulan DataTable verilerini veritabanına kaydetmek isterseniz şuraya bakın.
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
Cevap olarak seçen: idrisy
22.04.17 00:29
Bunu yapabilmek için tablonun id değerini bilmen lazım. Eğer id değeri yokas tablonun HTML içinde kaçıncı tablo olduğunu bilmelisin veya tüm tabloları gezip kendi tablonu bulmalısın. Bunlar biraz daha uzun konular. Bu örnek tablonun id değerini bildiğininde değerleri nasıl alacağını gösterir. Verdiğin Örnek ...<table class="frmList" cellspacing="0" cellpadding="1" rules="all" id="dgListe" style="border-color:#CCCCCC;border-width:1px;border-style:solid;width:100%;border-collapse:collapse;">
<tbody><tr>
<td class="frmListBaslik" align="center">Sıra</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Adı</td><td class="frmListBaslik" align="center" bgcolor="#FFFF00">Soyadı</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Okul No</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">Sınıfı</td><td class="frmListBaslik" align="center">
</td><td class="frmListBaslik" align="center"> </td>
</tr><tr>
<td align="center">1</td><td align="left">
ABDULLAH</td><td align="left">ERGİ</td><td align="left">7317</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">2</td><td align="left">
AHMET</td><td align="left">GÖKLER</td><td align="left">10225</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">3</td><td align="left">
ALİ</td><td align="left">ALTUN</td><td align="left">1086</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">4</td><td align="left">
ALPER</td><td align="left">SARIGÜZEL</td><td align="left">7314</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">5</td><td align="left">
AYCAN</td><td align="left">KARAMAN</td><td align="left">10204</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">6</td><td align="left">
BEKİR</td><td align="left">ŞAL</td><td align="left">7301</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">7</td><td align="left">
BERKAY</td><td align="left">TOPAL</td><td align="left">7501</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr>
</tbody></table> Daha önce burada bulunan örneğin yerine daha otomatik bir örnek: Bu örnek alan sayısı ve alanları atlama gibi işlerde kolaylık sağlar. private void Button1_Click(object sender, EventArgs e)
{
webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
webBrowser1.Url = new Uri(@"d:\a.html");
}
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// Alan adlarını tanımla.
string[] Alanlar = new string[] { "Adi", "Soyadi", "OkulNo", "Sinifi" };
// Hangi hücrelerin kullanacağını belirleyen diziyi tanımla
// (Duruma göre arada hücre no atlanabilir. İlk hücre numarası 0'dır. Burada birinci hücre atlanıyor.)
int[] HucreNumaralari = new int[] { 1, 2, 3, 4 };
//(Alan adları dizisi ile HucreNumaralari dizisinin eleman sayısı aynı olmalı. HucreNumaralari dizisinin
// eleman sayısı fazla olursa hata çıkar.
// Başlık satırı yoksa bunu false yap.
bool BaslikSatiriVar = true;
// Bir DataTable oluştur.
DataTable dt = new DataTable();
dt.Clear();
// Alanlar dizisini gezerek her bir eleman için bir alan ekle.
foreach (string alanAdi in Alanlar)
dt.Columns.Add(alanAdi);
// Tablonun id özelliği değerinin tablom olduğunu varsayarsak.
// Tabloyu al.
HtmlElement tablo = webBrowser1.Document.GetElementById("dgListe");
// Satırları satirlar koleksiyonuna yükle.
HtmlElementCollection satirlar = tablo.GetElementsByTagName("tr");
HtmlElementCollection hucreler;
DataRow kayit;
// Satırları tek tek gez. Başlık satırı varsa 2. satırdan başla.
for (int i = BaslikSatiriVar ? 1 : 0; i < satirlar.Count; i++)
{
// DataTable için yeni bir kayıt oluştur.
kayit = dt.NewRow();
// Şimdiki satırın hücrelerini bir koleksiyona al.
hucreler = satirlar[i].GetElementsByTagName("td");
// Hücreler içinde HucreNumaralari dizisinin boyu kadar bir gezinti yap.
for (int j = 0; j < HucreNumaralari.Length; j++)
{
// Sıradaki hücre numarasını (indisini) al.
int hucreNo = HucreNumaralari[j];
// hucreler koleksiyonundaki indisi hucreNo olan alanın değerini
// kaydın j. alanına ata.
kayit[j] = hucreler[hucreNo].InnerText;
// veya kısaca.
// kayit[j] = hucreler[HucreNumaralari[j]].InnerText;
}
dt.Rows.Add(kayit);
}
// Olay dinleyiciyi kaldır.
webBrowser1.DocumentCompleted -= WebBrowser1_DocumentCompleted;
// Buradan sonra DataTable ile istediğini yapabilirsin.
// Örneğin forma bir DataGridView koy. Alttaki satır kayıtları görüntüleyecektir.
dataGridView1.DataSource = dt;
}
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
22.04.17 00:28
Bunu yapabilmek için tablonun id değerini bilmen lazım. Eğer id değeri yokas tablonun HTML içinde kaçıncı tablo olduğunu bilmelisin veya tüm tabloları gezip kendi tablonu bulmalısın. Bunlar biraz daha uzun konular. Bu örnek tablonun id değerini bildiğininde değerleri nasıl alacağını gösterir. Verdiğin Örnek ...<table class="frmList" cellspacing="0" cellpadding="1" rules="all" id="dgListe" style="border-color:#CCCCCC;border-width:1px;border-style:solid;width:100%;border-collapse:collapse;">
<tbody><tr>
<td class="frmListBaslik" align="center">Sıra</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Adı</td><td class="frmListBaslik" align="center" bgcolor="#FFFF00">Soyadı</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Okul No</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">Sınıfı</td><td class="frmListBaslik" align="center">
</td><td class="frmListBaslik" align="center"> </td>
</tr><tr>
<td align="center">1</td><td align="left">
ABDULLAH</td><td align="left">ERGİ</td><td align="left">7317</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">2</td><td align="left">
AHMET</td><td align="left">GÖKLER</td><td align="left">10225</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">3</td><td align="left">
ALİ</td><td align="left">ALTUN</td><td align="left">1086</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">4</td><td align="left">
ALPER</td><td align="left">SARIGÜZEL</td><td align="left">7314</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">5</td><td align="left">
AYCAN</td><td align="left">KARAMAN</td><td align="left">10204</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">6</td><td align="left">
BEKİR</td><td align="left">ŞAL</td><td align="left">7301</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">7</td><td align="left">
BERKAY</td><td align="left">TOPAL</td><td align="left">7501</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr>
</tbody></table> Daha önce burada bulunan örneğin yerine daha otomatik bir örnek: Bu örnek alan sayısı ve alanları atlama gibi işlerde kolaylık sağlar. private void Button1_Click(object sender, EventArgs e) { webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted; webBrowser1.Url = new Uri(@"d:\a.html"); } private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { // Alan adlarını tanımla. string[] Alanlar = new string[] { "Adi", "Soyadi", "OkulNo", "Sinifi" }; // Hangi hücrelerin kullanacağını belirleyen diziyi tanımla // (Duruma göre arada hücre no atlanabilir. İlk hücre numarası 0'dır. Burada birinci hücre atlanıyor.) int[] HucreNumaralari = new int[] { 1, 3, 4 }; //(Alan adları dizisi ile HucreNumaralari dizisinin eleman sayısı aynı olmalı. HucreNumaralari dizisinin // eleman sayısı fazla olursa hata çıkar. // Başlık satırı yoksa bunu false yap. bool BaslikSatiriVar = true; // Bir DataTable oluştur. DataTable dt = new DataTable(); dt.Clear(); // Alanlar dizisini gezerek her bir eleman için bir alan ekle. foreach (string alanAdi in Alanlar) dt.Columns.Add(alanAdi); // Tablonun id özelliği değerinin tablom olduğunu varsayarsak. // Tabloyu al. HtmlElement tablo = webBrowser1.Document.GetElementById("dgListe"); // Satırları satirlar koleksiyonuna yükle. HtmlElementCollection satirlar = tablo.GetElementsByTagName("tr"); HtmlElementCollection hucreler; DataRow kayit; // Satırları tek tek gez. Başlık satırı varsa 2. satırdan başla. for (int i = BaslikSatiriVar ? 1 : 0; i < satirlar.Count; i++) { // DataTable için yeni bir kayıt oluştur. kayit = dt.NewRow(); // Şimdiki satırın hücrelerini bir koleksiyona al. hucreler = satirlar[i].GetElementsByTagName("td"); // Hücreler içinde HucreNumaralari dizisinin boyu kadar bir gezinti yap. for (int j = 0; j < HucreNumaralari.Length; j++) { // Sıradaki hücre numarasını (indisini) al. int hucreNo = HucreNumaralari[j]; // hucreler koleksiyonundaki indisi hucreNo olan alanın değerini // kaydın j. alanına ata. kayit[j] = hucreler[hucreNo].InnerText; // veya kısaca. // kayit[j] = hucreler[HucreNumaralari[j]].InnerText; } dt.Rows.Add(kayit); } // Olay dinleyiciyi kaldır. webBrowser1.DocumentCompleted -= WebBrowser1_DocumentCompleted; // Buradan sonra DataTable ile istediğini yapabilirsin. // Örneğin forma bir DataGridView koy. Alttaki satır kayıtları görüntüleyecektir. dataGridView1.DataSource = dt; }
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
20.04.17 00:52
Bunu yapabilmek için tablonun id değerini bilmen lazım. Eğer id değeri yokas tablonun HTML içinde kaçıncı tablo olduğunu bilmelisin veya tüm tabloları gezip kendi tablonu bulmalısın. Bunlar biraz daha uzun konular. Bu örnek tablonun id değerini bildiğininde değerleri nasıl alacağını gösterir. Verdiğin Örnek ...<table class="frmList" cellspacing="0" cellpadding="1" rules="all" id="dgListe" style="border-color:#CCCCCC;border-width:1px;border-style:solid;width:100%;border-collapse:collapse;">
<tbody><tr>
<td class="frmListBaslik" align="center">Sıra</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Adı</td><td class="frmListBaslik" align="center" bgcolor="#FFFF00">Soyadı</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">
Okul No</td>
<td class="frmListBaslik" align="center" bgcolor="#FFFF00">Sınıfı</td><td class="frmListBaslik" align="center">
</td><td class="frmListBaslik" align="center"> </td>
</tr><tr>
<td align="center">1</td><td align="left">
ABDULLAH</td><td align="left">ERGİ</td><td align="left">7317</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">2</td><td align="left">
AHMET</td><td align="left">GÖKLER</td><td align="left">10225</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">3</td><td align="left">
ALİ</td><td align="left">ALTUN</td><td align="left">1086</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">4</td><td align="left">
ALPER</td><td align="left">SARIGÜZEL</td><td align="left">7314</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">5</td><td align="left">
AYCAN</td><td align="left">KARAMAN</td><td align="left">10204</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr style="background-color:White;">
<td align="center">6</td><td align="left">
BEKİR</td><td align="left">ŞAL</td><td align="left">7301</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr><tr>
<td align="center">7</td><td align="left">
BERKAY</td><td align="left">TOPAL</td><td align="left">7501</td><td align="left">
9. Sınıf / A Şubesi ( ALANI YOK)</td><td align="left"> </td><td align="left">
</td>
</tr>
</tbody></table> Örneğe göre: private void Button1_Click(object sender, EventArgs e)
{
webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
}
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// Bir DataTable oluştur.
DataTable dt = new DataTable();
dt.Clear();
// Sütunları ekle. Bunları kendi sütunlarınla değiştirirsin.
dt.Columns.Add("Adi");
dt.Columns.Add("Soyadi");
dt.Columns.Add("OkulNo");
dt.Columns.Add("Sınıfı");
dt.Columns.Add("Bos1");
dt.Columns.Add("Bos2");
// Tablonun id özelliği değerinin tablom olduğunu varsayarsak.
// Tabloyu al.
HtmlElement tablo = webBrowser1.Document.GetElementById("dgListe");
// Satırları satirlar koleksiyonuna yükle.
HtmlElementCollection satirlar = tablo.GetElementsByTagName("tr");
HtmlElementCollection hucreler;
// Satirlar koleksiyonundaki satırları tek tek gez.
bool ilk = true;
foreach (HtmlElement satir in satirlar)
{
if (ilk)
{
ilk = false;
continue;
}
// DataTable için yeni bir satır oluştur.
DataRow kayit = dt.NewRow();
// Şimdiki satırın hücrelerini hucreler koleksiyonuna yükle.
hucreler = satir.GetElementsByTagName("td");
int i = -1;
foreach (HtmlElement hucre in hucreler)
{
i++; // 1. hücreyi atla if (i==0) continue;
// Burada her bir hücrenin değerini hucre.InnerText şeklinde alabilirsin.
kayit[i-1] = hucre.InnerText;
}
// DataTable'nin satırlarına yeni satırı ekle.
dt.Rows.Add(kayit);
}
// Olay dinleyiciyi kaldır.
webBrowser1.DocumentCompleted -= WebBrowser1_DocumentCompleted;
// Buradan sonra DataTable ile istediğini yapabilirsin.
// Örneğin forma bir DataGridView koy. Alttaki satır kayıtları görüntüleyecektir.
dataGridView1.DataSource = dt;
}
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
En fazla 3 eski durum gösterilir.