آموزش وب اسکرپینگ، فرایند استخراج داده از وب‌سایت‌ها

1402/08/23 · عباس کردیان
آموزش Web Scraping در #C

آیا تا کنون اطلاعاتی را از چند وب‌سایت کپی‌برداری‌ و ذخیره کرده‌اید؟ احتمالا پس از آن به جمع آوری سریع‌تر اطلاعات درباره یک موضوع از همه یا برخی وب‌سایت‌ها نیز اندیشیده‌اید! داده‌ها مانند دریایی وسیع هستند و جمع‌آوری همه آن‌ها با روش دستی امکان پذیر نیست؛ اما یکی از بهترین روش‌ها برای دستیابی سریع و وسیع به اطلاعات مورد نیازتان وب اسکرپینگ (Web Scraping) است که در ادامه به بررسی آن، کاربرد‌ها و مزایایش می‌پردازیم.

وب اسکرپینگ چیست؟

وب اسکرپینگ که از آن با عنوان جستجو گر داده‌ها نیز یاد می‌شود، در زبان فارسی معنی خراش دادن وب را می‌دهد. کپی‌برداری و ذخیره دستی اطلاعات که حتمی تا کنون انجام داده‌اید یک نمونه بسیار کوچک و ساده از وب اسکرپینگ است. به طور کلی به استخراج داده‌های مورد نیاز از تمام یا برخی از وب‌سایت‌ها به صورت خودکار با کمک روش‌های کامپیوتری و نرم‌افزار‌ها، وب اسکرپینگ گفته می‌شود.سی شارپ (و به طور کلی دات نت)، تمامی‌ابزارها و کتابخانه‌های لازم برای پیاده‌سازی وب اِسکرِپینگ را فراهم و به شما کمک می‌کند تا به سرعت پروژه Scraper خود را پیاده‌سازی و داده‌های مورد نظر را جمع‌آوری کنید.

امروزه، شرکت‌های زیادی هستند که از مزایای داده‌های جمع‌آوری شده از وب، بهره می‌گیرند. سی شارپ، یکی از مناسب‌ترین زبان‌های برنامه‌نویسی برای پیاده سازی Web Scraping است.

تنظیم و راه‌اندازی محیط برنامه نویسی وب اسکرپینگ با سی شارپ

گام اول : نصب کتابخانه Html Agility Pack و افزونه CSS Selector مربوط به آن

 

dotnet add package HtmlAgilityPack

 

dotnet add package HtmlAgilityPack.CssSelectors

 

نکته مهم : صدور داده‌ها در قالب CSV با CsvHelper

 

dotnet add package CsvHelper

 

گام دوم : استخراج داده از عناصر HTML

using HtmlAgilityPack; 
using CsvHelper; 
using System.Globalization; 
 
namespace HinasoWebScraper 
{ 
	public class Program 
	{ 
		// defining a custom class to store the scraped data 
		public class PokemonProduct 
		{ 
			public string? Url { get; set; } 
			public string? Image { get; set; } 
			public string? Name { get; set; } 
			public string? Price { get; set; } 
		} 
 
		public static void Main() 
		{ 
			// creating the list that will keep the scraped data 
			var pokemonProducts = new List<PokemonProduct>(); 
 
			// creating the HAP object 
			var web = new HtmlWeb(); 
 
			// visiting the target web page 
			var document = web.Load("https://scrapeme.live/shop/"); 
 
			// getting the list of HTML product nodes 
			var productHTMLElements = document.DocumentNode.QuerySelectorAll("li.product"); 
			// iterating over the list of product HTML elements 
			foreach (var productHTMLElement in productHTMLElements) 
			{ 
				// scraping logic 
				var url = HtmlEntity.DeEntitize(productHTMLElement.QuerySelector("a").Attributes["href"].Value); 
				var image = HtmlEntity.DeEntitize(productHTMLElement.QuerySelector("img").Attributes["src"].Value); 
				var name = HtmlEntity.DeEntitize(productHTMLElement.QuerySelector("h2").InnerText); 
				var price = HtmlEntity.DeEntitize(productHTMLElement.QuerySelector(".price").InnerText); 
 
				var pokemonProduct = new PokemonProduct() { Url = url, Image = image, Name = name, Price = price }; 
				pokemonProducts.Add(pokemonProduct); 
			} 
 
			// crating the CSV output file 
			using (var writer = new StreamWriter("pokemon-products.csv")) 
			using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) 
			{ 
				// populating the CSV file 
				csv.WriteRecords(pokemonProducts); 
			} 
		} 
	} 
}

 

 

 


 

Web Scraping CsvHelper #C سی شارپ وب اسکرپینگ Html Agility Pack CSS Selector

نظرات (0)