İpucu

Programla yaparken bazen internet üzerinden bir siteden bilgi almak istediğimiz zamanlar olur. İste tam bu anda yardımınıza HtmlAgilityPack yetişiyor. Bir döviz kurlarını sitenize veya desktop app. eklemek isteyebilir veyahut bu bilgiyi saklamak isteyebilirsiniz.

Bu işlemi string işlemleri ile yapmanız hem zaman hemde işlem olarak uzun sürebilir. HtmlAgilityPack hızlı kısa ve temiz kod yapısı ile site içerisindeki tüm link resim veya taglar bilgilerini çabucak projenize entegre edebirsiniz.

indrimek için http://htmlagilitypack.codeplex.com

Yerel bir Dosyadan Bilgi almak için;

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
 
Bir Siteden bilgi almak için;
		static void siteparse(string url)
		{

			var site = url.ToString();
			Console.WriteLine(url.ToString());
			var client = new WebClient();
			var htmltext = client.DownloadString(site);
			HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
			htmlDoc.OptionFixNestedTags = true;
			htmlDoc.LoadHtml(htmltext);

			var htmldoc = new HtmlAgilityPack.HtmlDocument
			{
				OptionFixNestedTags = true,
				OptionAutoCloseOnEnd = true
			};
			string adi, vesion, katagori, sisten, rayting, link, linkresim;
			if (htmlDoc.DocumentNode != null)
			{
				foreach (var nd in htmlDoc.DocumentNode.SelectNodes("//div[@class='contentin']"))
				{

					foreach (var fixture in nd.SelectNodes("a"))
					{
						try
						{

							adi = fixture.SelectSingleNode(".//li").
								SelectSingleNode(".//div[@class='hipappimg']").
								SelectSingleNode(".//img").Attributes["title"].Value.ToString();
							vesion = fixture.SelectSingleNode(".//li").
								SelectSingleNode(".//div[@class='hipapplist']").
								SelectSingleNode(".//div[@class='hipappversion']").InnerText.ToString().Replace("Version: ", "").Trim().ToString();
							katagori = fixture.SelectSingleNode(".//li").
								SelectSingleNode(".//div[@class='hipapplist']").
								SelectSingleNode(".//div[@class='hipappcatname']").InnerText.ToString().Replace("Category: ", "").Trim().ToString();
							sisten = "";
							foreach (var fixture2 in fixture.SelectNodes(".//div[@class='hipapplist']"))
							{

								sisten = fixture2.SelectNodes(".//div[@class='hipappcatname']")[1].InnerText.Trim().Replace("Support: " + System.Environment.NewLine, "").ToString();
								sisten = sisten.Trim().ToString();
							}
							rayting = conver(fixture.SelectSingleNode(".//li").
							                 SelectSingleNode(".//div[@class='hipapplist']").
							                 SelectSingleNode(".//div[@class='star_rating']").
							                 SelectSingleNode(".//div[@class='usercountrating']").InnerText.ToString());
							linkresim = fixture.SelectSingleNode(".//li").
								SelectSingleNode(".//div[@class='hipappimg']").
								SelectSingleNode(".//img").Attributes["src"].Value.ToString();
							link = fixture.Attributes["href"].Value.ToString();
							
							Console.WriteLine("{0} - {1} - {2} - {3}", adi.ToString(), vesion.ToString(), sisten.ToString(), rayting.ToString());
						}
						catch (Exception ex)
						{
							Console.WriteLine(ex.ToString());
						}
					}
				}
			}
		}