Adətən tələbələrimə daha yeni texnologiyaları tövsiyyə etsəm də, köhnə məktəbin də maraqlı elementlərini göstərmək maraqlı olur. Düzdür Asp.net çox köhnə texnologiya sayılmasa da, artıq son innovasiyalar (nocode, AI, copilot) kodlaşdırmada yeni cığır açır. Daha əvvəlki dərsdə asp.net ilə AI inteqrasiya edib video generasiya eləmişdik. Bugünkü dərsdə asp.net vasitəsi ilə veb saytı parçalayıb, içərisindən lazımi məlumatları çəkməyə çalışacağıq. Bu metoda Web scraping deyilir. Adətən veb scrape üçün Python və R dilini istifadə edirəm. Bu keçiddə R dilində bir çox veb scrape nümunələri ilə, o cümlədən turbo.az, allegro.pl kimi məşhur saytların parçalanma metodu ilə tanış ola bilərsiniz.
Bunun üçün Create new project-->Console App (.Net Framework)-->Next edirik.
Bunun üçün Visual Studio menyudan
Tools-->Nuget Package Manager-->Manage NuGet pa... seçirik.
Açılan pəncərədən HTMLAgilityPack axtarıb, paketi yükləyin, qurun.
Bu dərs üçün https://yts.mx/ saytını parçalayacağıq. Bu saytın bütün məqalələrinin adını siyahı şəklində əldə edəcəyik. Eyni üsulla siz turbo.az, tap.az, youtube kanalı hətta bir çox sosial şəbəkələri parçalayıb Data yığa bilərsiniz.
Visual Studio projenizdə bu kodu yerləşdirib Run edin.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Scraper
{
class Program
{
static void Main(string[] args)
{
// Creating an instance of HtmlWeb class
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
// Loading HTML content from the specified URL
HtmlAgilityPack.HtmlDocument doc = web.Load("https://yts.mx/");
//Console.WriteLine(doc.DocumentNode.InnerHtml); //InnerText
foreach (var item in doc.DocumentNode.SelectNodes("//a[@class='browse-movie-title']"))
{
Console.WriteLine(item.InnerText.Trim());
}
}
}
}
Run etdikdə, kodumuz gedib həmin saytdan filmlərin adını dartıb gətirəcək. Biz burda web adlı bir robot düzəldirik sanki, sonra o robota deyirik get filan URL adresdən müəyyən məlumatları götür gəl.
Bu kod isə həm film adı, həm ilini çəkib gətirir, daha sonra .csv fayla yazıb yaddaşa verir.
using System;
using System.IO;
using HtmlAgilityPack;
namespace Scraper
{
class Program
{
static void Main(string[] args)
{
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://turbo.az/");
var carNodes = doc.DocumentNode.SelectNodes("//div[@class='products-i__bottom']");
if (carNodes != null)
{
// Specify the directory where you want to save the CSV file
string directoryPath = @"C:\Users\camel\Desktop\AspNet Projects\TestScrape";
string csvFileName = "cars.csv";
string csvFilePath = Path.Combine(directoryPath, csvFileName);
using (StreamWriter writer = new StreamWriter(csvFilePath))
{
writer.WriteLine("Title,Name");
foreach (var carNode in carNodes)
{
var title = carNode.InnerText.Trim();
var nameNode = carNode.SelectSingleNode(".//div[@class='products-i__name products-i__bottom-text']");
var name = nameNode != null ? nameNode.InnerText.Trim() : "Year not available";
writer.WriteLine($"{title},{name}");
}
}
Console.WriteLine($"CSV file saved to: {csvFilePath}");
}
}
}
}
Classwork:
Comments
Add comment