Visual Studio ilə veb scrape

Visual Studio ilə veb scrape

Publish date : 2024/03/10
345 views

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. 

1. Əvvəlcə Visual Studionu açıb, yeni proje düzəldək. 

Bunun üçün Create new project-->Console App (.Net Framework)-->Next edirik.

2. Açılan projemizdə parsinq edə bilmək üçün lazımi paketi qururuq.

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. 

3. Əvvəlcə hansı saytı parse edəcəyik onu incələyək.

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.

Kodu görmək üçün tıqlayın...

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.

Kod 2

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:

  1. Make WordCloud analytics on the data from turbo.az
  2. Parse turbo.az, tap.az, trendyol.com, amazon.com
  3. Parse balboaschool.az and fetch all post titles
  4. Create project with a textbox in which it is possible enter car name, and it will fetch all data from turbo.az by the given car name.
  5. Fetch the data from a multiple page website.
  6. Fetch the data from a single page, but infinite opening website...

 

 

 

Comments

Add comment