Cevap Geçmişi
11.07.16 16:00
C# ile HTML belgesi içindeki koddan bir etiketin içeriğini almak / HTML'yi çözümlemek için en çok tercih edilen yöntem HtmlAgilityPack isimli bir kütüphaneyi kullanmaktır. Bu kütüphanede HTML belgesini yükleyip, XPath ile etiket veya etiketlere ulaşıp içeriğini alabilirsiniz. HtmlAgilityPack buradan indirilebilir. İndirdikten sonra uygun .NET sürümünün klasöründeki dosyaları proje dizinine kopyalayın. Daha sonra Solution Explorer'dan projenizi sağ tıklayıp Add/Reference seeneği ile dll dosyasını projenize ekleyin. Nuget ile de indirebilirsiniz . Ancak kopyalama yolu daha sadedir. Yanlız XPath bilmeniz gerekiyor. İçinde sizin sorunuzda belirttiğiniz HTML kodu bulunan bir HTML belgesi için şöyle bir örnek verebiliriz: void cozumle(string adres)
{
// Bir WebClient ile sayfanın tamamını string olarak al.
WebClient client = new WebClient();
string htmlString = client.DownloadString(adres);
// htmlBelgesiument nesnesi oluştur.
HtmlAgilityPack.HtmlDocument htmlBelgesi = new HtmlAgilityPack.HtmlDocument();
// Etiket kapatma hatalarını düzeltsin.
htmlBelgesi.OptionFixNestedTags = true;
// Belgeyi çözümle
htmlBelgesi.LoadHtml(htmlString);
// id özellik değeri contract olan etiketin içindeki 6. img etiketinden sonra gelen ilk
// metin düğümünü bul ve secilenler isimli koleksiyona ata.
HtmlAgilityPack.HtmlNodeCollection secilenler = htmlBelgesi.DocumentNode.SelectNodes("(/p[@id='contract']//img)[6]/following-sibling::text()");
if (secilenler != null) // Etiket bulabildiyse ... (Şarta uyan etiket bulunamadıysa null döndürüyor.)
{
// Aranan secilenler'in ilk elemanıdır. Bunun InnerText özellik değerini label1'in
// Text özelliğine ata.
label1.Text = secilenler[0].InnerText;
}
} Yukarıda da söylediğim gibi biraz XPath öğrenmek gerekiyor. Ben şu anda müsait olmadığımdan kodu deneyemedim. Eğer soruya bir ekiniz olursa veya çalızmazsa üye olup bu cevap altına bir yorum ekleyerek bildirin.
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
Cevap olarak seçen: canora
11.07.16 15:57
C# ile HTML belgesi içindeki koddan bir etiketin içeriğini almak / HTML'yi çözümlemek için en çok tercih edilen yöntem HtmlAgilityPack isimli bir kütüphaneyi kullanmaktır. Bu kütüphanede HTML belgesini yükleyip, XPath ile etiket veya etiketlere ulaşıp içeriğini alabilirsiniz. HtmlAgilityPack buradan indirilebilir. İndirdikten sonra uygun .NET sürümünün klasöründeki dosyaları proje dizinine kopyalayın. Daha sonra Solution Explorer'dan projenizi sağ tıklayıp Add/Reference seeneği ile dll dosyasını projenize ekleyin. Nuget ile de indirebilirsiniz . Ancak kopyalama yolu daha sadedir. Yanlız XPath bilmeniz gerekiyor. Ben size bir iki örnek yazacağım. İçinde sizin sorunuzda belirttiğiniz HTML kodu bulunan bir HTML belgesi için şöyle bir örnek verebiliriz: void cozumle(string adres)
{
// Bir WebClient ile sayfanın tamamını string olarak al.
WebClient client = new WebClient();
string htmlString = client.DownloadString(adres);
// htmlBelgesiument nesnesi oluştur.
HtmlAgilityPack.HtmlDocument htmlBelgesi = new HtmlAgilityPack.HtmlDocument();
// Etiket kapatma hatalarını düzeltsin.
htmlBelgesi.OptionFixNestedTags = true;
// Belgeyi çözümle
htmlBelgesi.LoadHtml(htmlString);
// id özellik değeri contract olan etiketin içindeki 6. img etiketinden sonra gelen ilk // metin düğümünü bul ve secilenler isimli koleksiyona ata.
HtmlAgilityPack.HtmlNodeCollection secilenler = htmlBelgesi.DocumentNode.SelectNodes("(/p[@id='contract']//img)[6]/following-sibling::text()");
if (secilenler != null) // Etiket bulabildiyse ... (Şarta uyan etiket bulunamadıysa null döndürüyor.)
{
// Aranan secilenler'in ilk elemanıdır. Bunun InnerText özellik değerini label1'in // Text özelliğine ata. label1.Text = secilenler[0].InnerText;
}
} Yukarıda da söylediğim gibi biraz XPath öğrenmek gerekiyor. Ben şu anda müsait olmadığımdan kodu deneyemedim. Eğer soruya bir ekiniz olursa veya çalızmazsa üye olup bu cevap altına bir yorum ekleyerek bildirin.
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
09.07.16 08:35
C# ile HTML belgesi içindeki koddan bir etiketin içeriğini almak / HTML'yi çözümlemek için en çok tercih edilen yöntem HtmlAgilityPack isimli bir kütüphaneyi kullanmaktır. Bu kütüphanede HTML belgesini yükleyip, XPath ile etiket veya etiketlere ulaşıp içeriğini alabilirsiniz. HtmlAgilityPack buradan indirilebilir. İndirdikten sonra uygun .NET sürümünün klasöründeki dosyaları projenizin debug/bin dizinine kopyalayın. Nuget ile de indirebilirsiniz . Ancak kopyalama yolu daha sadedir. Yanlız XPath bilmeniz gerekiyor. Ben size bir iki örnek yazacağım. İçinde sizin sorunuzda belirttiğiniz HTML kodu bulunan bir HTML belgesi için şöyle bir örnek verebiliriz: string cozumle(string adres)
{
// Bir WebClient ile sayfanın tamamını string olarak al.
WebClient client = new WebClient();
string htmlString = client.DownloadString(adres);
// htmlBelgesiument nesnesi oluştur.
HtmlAgilityPack.HtmlDocument htmlBelgesi = new HtmlAgilityPack.HtmlDocument();
// Etiket kapatma hatalarını düzeltsin.
htmlBelgesi.OptionFixNestedTags = true;
// Belgeyi çözümle
htmlBelgesi.LoadHtml(htmlString);
// id özellik değeri contract olan tüm etiketlerin içindeki tüm text düğümleri (etiket içinde olmayan)
// metinleri) textNode olarak seç ve bir etiket koleksiyonuna ata.
HtmlNodeCollection secilenler = htmlBelgesi.DocumentNode.SelectNodes("//p[@id='contract']//text()");
if (secilenler != null) // Etiket bulabildiyse ... (Şarta uyan etiket bulunamadıysa null döndürüyor.)
{
// Örneğinizde iki text düğümün birincisini istediğinizden...
label1.Text = secilenler[0].InnerText;
}
} Yukarıda da söylediğim gibi biraz XPath öğrenmek gerekiyor. Ben şu anda müsait olmadığımdan kodu deneyemedim. Eğer soruya bir ekiniz olursa veya çalızmazsa üye olup bu cevap altına bir yorum ekleyerek bildirin.
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
08.07.16 20:27
C# ile HTML belgesi içindeki koddan bir etiketin içeriğini almak / HTML'yi çözümlemek için en çok tercih edilen yöntem HtmlAgilityPack isimli bir kütüphaneyi kullanmaktır. Bu kütüphanede HTML belgesini yükleyip, XPath ile etiket veya etiketlere ulaşıp içeriğini alabilirsiniz. HtmlAgilityPack buradan indirilebilir. İndirdikten sonra uygun .NET sürümünün klasöründeki dosyaları projenizin debug/bin dizinine kopyalayın. Nuget ile de indirebilirsiniz . Ancak kopyalama yolu daha sadedir. Yanlız XPath bilmeniz gerekiyor. Ben size bir iki örnek yazacağım. İçinde sizin sorunuzda belirttiğiniz HTML kodu bulunan bir HTML belgesi için şöyle bir örnek verebiliriz:
string cozumle(string adres)
{
// Bir WebClient ile sayfanın tamamını string olarak al.
WebClient client = new WebClient();
string htmlString = client.DownloadString(adres);
// htmlBelgesiument nesnesi oluştur.
HtmlAgilityPack.htmlBelgesiument htmlBelgesi = new HtmlAgilityPack.htmlBelgesiument();
// Etiket kapatma hatalarını düzeltsin.
htmlBelgesi.OptionFixNestedTags = true;
// Belgeyi çözümle
htmlBelgesi.LoadHtml(htmlString);
// id özellik değeri contract olan tüm etiketlerin içindeki tüm text düğümleri (etiket içinde olmayan)
// metinleri) textNode olarak seç ve bir etiket koleksiyonuna ata.
HtmlNodeCollection secilenler = htmlBelgesi.DocumentNode.SelectNodes("//p[@id='contract']//text()");
if (secilenler != null) // Etiket bulabildiyse ... (Şarta uyan etiket bulunamadıysa null döndürüyor.)
{
// Örneğinizde iki text düğümün birincisini istediğinizden...
label1.Text = secilenler[0].InnerText;
}
} Yukarıda da söylediğim gibi biraz XPath öğrenmek gerekiyor. Ben şu anda müsait olmadığımdan kodu deneyemedim. Eğer soruya bir ekiniz olursa veya çalızmazsa üye olup bu cevap altına bir yorum ekleyerek bildirin.
Ekleyen: cevapsitesi
En fazla 3 eski durum gösterilir.