Merhaba, sorunum şu ben html dosyamın içindeki veriyi alıp listeye aktarıyorum. Şimdi sorun şu ol etiketi içindeki li etiketinin içindeki p etiketinin içinde 2 farklı kelime var. Biri strong etiketi içerisinde yazıyor bu ingilizce kelime biri ise direk yazılı yani ekstra strong etiketi kullanılmıyor. Ben HtmlAgilityPack ile strong etiketi içindeki kelimeyi aldım fakat strong olmayan kelimeyi alınca strong etiketi içindeki ingilizce kelimede geliyor. Ben nasıl strong'un gelmesini iptal ederim?
Bakın üstte resimde sol tarafta "accountant" yazıyor bunu alırken sorun yok fakat sağ tarafaki "muhasebeci" kelimesini alırken "accountant" kelimeside geliyor. Bunları nasıl ayırırım?
accountant'ı aldığım kod:
C#:
List<string> englishKeywords = new List<string>();
HtmlAgilityPack.HtmlWeb htmlWeb = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument htmlDocument = htmlWeb.Load(@"dosyaKonumu");
foreach (HtmlAgilityPack.HtmlNode selectNode in htmlDocument.DocumentNode.SelectNodes("//ol//li//p//strong"))
{
englishKeywords.Add(selectNode.InnerText.ToString());
}
return englishKeywords;
Üstte verdiğim c# kodunun aynısını strong olmayan kelimeyi almak içinde kullanıyorum şu şekilde: //ol//li//p fakat strong'u dahil ediyor. Benim strong'u devre dışı bırakmam gerek nasıl yaparım?
Merhaba, sorunum şu ben html dosyamın içindeki veriyi alıp listeye aktarıyorum. Şimdi sorun şu ol etiketi içindeki li etiketinin içindeki p etiketinin içinde 2 farklı kelime var. Biri strong etiketi içerisinde yazıyor bu ingilizce kelime biri ise direk yazılı yani ekstra strong etiketi kullanılmıyor. Ben HtmlAgilityPack ile strong etiketi içindeki kelimeyi aldım fakat strong olmayan kelimeyi alınca strong etiketi içindeki ingilizce kelimede geliyor. Ben nasıl strong'un gelmesini iptal ederim?
Eki Görüntüle 857229
Bakın üstte resimde sol tarafta "accountant" yazıyor bunu alırken sorun yok fakat sağ tarafaki "muhasebeci" kelimesini alırken "accountant" kelimeside geliyor. Bunları nasıl ayırırım?
accountant'ı aldığım kod:
C#:
List<string> englishKeywords = new List<string>();
HtmlAgilityPack.HtmlWeb htmlWeb = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument htmlDocument = htmlWeb.Load(@"dosyaKonumu");
foreach (HtmlAgilityPack.HtmlNode selectNode in htmlDocument.DocumentNode.SelectNodes("//ol//li//p//strong"))
{
englishKeywords.Add(selectNode.InnerText.ToString());
}
return englishKeywords;
Üstte verdiğim c# kodunun aynısını strong olmayan kelimeyi almak içinde kullanıyorum şu şekilde: //ol//li//p fakat strong'u dahil ediyor. Benim strong'u devre dışı bırakmam gerek nasıl yaparım?
Hocam pek anlamadım ama C# içinden o kelimeleri iki noktadan ayırıp kullanabilirsiniz. Python'daki strip gibi.
Ayrıca foreach döngüsü sanırım iki kelimeyi de alıyor.
Hocam pek anlamadım ama C# içinden o kelimeleri iki noktadan ayırıp kullanabilirsiniz. Python'daki strip gibi.
Ayrıca foreach döngüsü sanırım iki kelimeyi de alıyor.
Evet ayırmak aklıma geldi fakat ileride htmlagilitypack bir daha lazım olursa cevabını bilmek istedim. Agilitypack'e // ile dizin söylüyoruz dizini iptal etmek yok mu acaba? Syntax'a baktım ama bulamadım.
Evet ayırmak aklıma geldi fakat ileride htmlagilitypack bir daha lazım olursa cevabını bilmek istedim. Agilitypack'e // ile dizin söylüyoruz dizini iptal etmek yok mu acaba? Syntax'a baktım ama bulamadım.
Kullanımı için hazırlanmış dökümanı inceliyorum bulursam paylaşırım. Belki diğer etiketlediğimiz arkadaşlar konu hakkında bilgisi vardır onlar cevabı paylaşır. Sağ olun hocam yinede.
Kullanımı için hazırlanmış dökümanı inceliyorum bulursam paylaşırım. Belki diğer etiketlediğimiz arkadaşlar konu hakkında bilgisi vardır onlar cevabı paylaşır. Sağ olun hocam yinede.
//ol//li//p//strong ile sadece strong tagı arasındaki kelime geliyor. //ol//li//p ile strong'un dışında kalan kısmını da istiyorsunuz.
<strong>afraid:</strong> korkmuş sadece "korkmuş" ifadesi çekilmek isteniyorsa. Regex veya String.Replace kullanılabilir. HTMLAgility kullanmadığım için strong içerisindeki ifadeden kastınız <strong>afraid:</strong> korkmuş ise farklı bir çözüm afraid korkmuş olarak dönüyorsa farklı çözüm uygulamanız gerekiyor.
Hocam doğru anlamışsınız. Ben strong'un dışındaki alanı almak istiyorum ama alamadım maalesef. Split ile çektiğim veriyi bölüp dictionary'e atıp işledim. Teşekkür ediyorum ama yardımlarınız için.
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml("<ul><li><p><strong>accountant:</strong> muhasebeci</p></li> <li><p><strong>afraid:</strong> korkmuş</p></li> <li><p><strong>age:</strong> yaş</p></li> <li><p><strong>airplane:</strong> uçak</p></li> <li><p><strong>alone:</strong> yalnız</p></li> <li><p><strong>angry:</strong> kızgın</p></li> <li><p><strong>animal:</strong> hayvan</p></li> <li><p><strong>answer:</strong> cevap, cevap vermek</p></li></ul>");
var nodes = doc.DocumentNode.Descendants();
var list = nodes.FirstOrDefault();
foreach (var nodeItem in list.ChildNodes){
var pElement = nodeItem.ChildNodes.FirstOrDefault();
if(pElement!=null){
pElement.ChildNodes.FirstOrDefault().Remove();
Console.WriteLine(nodeItem.InnerText);
}
}
}
}