Webscraping in C

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWebScraper Nedir?

IronWebScraper, geliştiricilerin web sitelerini programlamatik olarak okumalarına ve içeriklerini çıkarmalarına olanak tanıyan, C# ve .NET programlama platformu için sınıf kütüphanesi ve çerçevesidir. Bu, web sitelerini veya mevcut intranetleri tersine mühendislikle veritabanlarına veya JSON verilerine geri dönüştürmek için idealdir. Aynı zamanda internetten büyük hacimli belgeler indirmek için de yararlıdır.

Pek çok açıdan, IronWebScraper, Python için Scrapy kütüphanesine benzer, ancak C#'ın avantajlarını kullanır, özellikle web kazıma süreci devam ederken kodu adım adım işleme ve hata ayıklama yeteneği.

Kurulum

İlk adımınız, IronWebScraper'ı NuGet'ten veya web sitemizden ZIP dosyasını indirerek kurmak olacaktır.

Gereken tüm sınıflar, IronWebScraper ad alanında bulunabilir.

Install-Package IronWebScraper

Popüler Kullanım Durumları

Web Sitelerinin Veritabanlarına Taşınması

IronWebScraper, web sitelerinizi yapılandırılmış veritabanlarına geri dönüştürmenize olanak tanıyan araçlar ve yöntemler sağlar. Bu teknoloji, eski web siteleri ve intranetlerden yeni C# uygulamanıza içerik aktardığınızda faydalıdır.

Web Sitelerinin Göçü

C# dilinde bir web sitesinin kısmi veya tam içeriğini kolayca çıkarmak, web sitesi ve intranet kaynaklarını taşırken veya yükseltirken zaman ve maliyet kaybını azaltır. Bu, doğrudan SQL dönüşümlerinden çok daha verimli olabilir, çünkü her web sayfasında görülebilen verileri düzleştirir ve önceki SQL veri yapılarını anlamayı veya karmaşık SQL sorguları oluşturmayı gerektirmez.

Arama Dizinlerinin Doldurulması

IronWebScraper, yapılandırılmış verileri okumak, her sayfayı okumak, ve böylece organizasyonunuz içindeki bir arama motorunu doğru bir şekilde doldurabilmek için kendi web sitenize veya intranetinize yönlendirilebilir.

IronWebScraper, arama dizininiz için içerik kazımak için ideal bir araçtır. IronSearch gibi bir arama uygulaması, güçlü bir kurumsal arama sistemi oluşturmak için IronWebScraper'dan yapılandırılmış içerik okuyabilir.

Iron Webscraper Kullanımı

IronWebScraper'ı nasıl kullanacağınızı öğrenmek için en iyisi örneklere bakmaktır. Bu temel örnek, bir web sitesi blogundan başlıkları kazıyan bir sınıf oluşturur.

using IronWebScraper;

namespace WebScrapingProject
{
    class MainClass
    {
        public static void Main(string [] args)
        {
            var scraper = new BlogScraper();
            scraper.Start();
        }
    }

    class BlogScraper : WebScraper
    {
        // Initialize scraper settings and make the first request
        public override void Init()
        {
            // Set logging level to show all log messages
            this.LoggingLevel = WebScraper.LogLevel.All;

            // Request the initial page to start scraping
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        // Method to handle parsing of the page response
        public override void Parse(Response response)
        {
            // Loop through each blog post title link found by CSS selector
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                // Clean and extract the title text
                string strTitle = title_link.TextContentClean;

                // Store the extracted title for later use
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            // Check if there is a link to the previous post page and if exists, follow it
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get the URL for the next page
                var next_page = response.Css("div.prev-post > a[href]")[0].Attributes["href"];

                // Request the next page to continue scraping
                this.Request(next_page, Parse);
            }
        }
    }
}
using IronWebScraper;

namespace WebScrapingProject
{
    class MainClass
    {
        public static void Main(string [] args)
        {
            var scraper = new BlogScraper();
            scraper.Start();
        }
    }

    class BlogScraper : WebScraper
    {
        // Initialize scraper settings and make the first request
        public override void Init()
        {
            // Set logging level to show all log messages
            this.LoggingLevel = WebScraper.LogLevel.All;

            // Request the initial page to start scraping
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        // Method to handle parsing of the page response
        public override void Parse(Response response)
        {
            // Loop through each blog post title link found by CSS selector
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                // Clean and extract the title text
                string strTitle = title_link.TextContentClean;

                // Store the extracted title for later use
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            // Check if there is a link to the previous post page and if exists, follow it
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get the URL for the next page
                var next_page = response.Css("div.prev-post > a[href]")[0].Attributes["href"];

                // Request the next page to continue scraping
                this.Request(next_page, Parse);
            }
        }
    }
}
Imports IronWebScraper

Namespace WebScrapingProject
	Friend Class MainClass
		Public Shared Sub Main(ByVal args() As String)
			Dim scraper = New BlogScraper()
			scraper.Start()
		End Sub
	End Class

	Friend Class BlogScraper
		Inherits WebScraper

		' Initialize scraper settings and make the first request
		Public Overrides Sub Init()
			' Set logging level to show all log messages
			Me.LoggingLevel = WebScraper.LogLevel.All

			' Request the initial page to start scraping
			Me.Request("https://ironpdf.com/blog/", AddressOf Parse)
		End Sub

		' Method to handle parsing of the page response
		Public Overrides Sub Parse(ByVal response As Response)
			' Loop through each blog post title link found by CSS selector
			For Each title_link In response.Css("h2.entry-title a")
				' Clean and extract the title text
				Dim strTitle As String = title_link.TextContentClean

				' Store the extracted title for later use
				Scrape(New ScrapedData() From {
					{ "Title", strTitle }
				})
			Next title_link

			' Check if there is a link to the previous post page and if exists, follow it
			If response.CssExists("div.prev-post > a[href]") Then
				' Get the URL for the next page
				Dim next_page = response.Css("div.prev-post > a[href]")(0).Attributes("href")

				' Request the next page to continue scraping
				Me.Request(next_page, AddressOf Parse)
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Belirli bir web sitesini kazımak için, o web sitesini okumak için kendi sınıfımızı oluşturmamız gerekecektir. Bu sınıf, Web Scraper'ı genişletecektir. Bu sınıfa, Init dahil olmak üzere bazı yöntemler ekleyeceğiz. Burada ilk ayarları yapabilir ve ilk isteği başlatabiliriz; bu da daha sonra tüm web sitesinin kazınacağı bir zincirleme reaksiyona neden olacaktır.

Ayrıca en az bir Parse yöntemi eklemeliyiz. Çözümleme yöntemleri, jQuery benzeri CSS seçicilerini kullanarak indirilen web sayfalarını okur ve içeriği seçer, ardından kullanım için ilgili metin ve/veya görüntüleri çıkarır.

Parse yöntemi içinde, tarayıcının hangi hiperlinkleri takip etmeye devam etmesini ve hangilerini yok saymasını istediğimizi de belirtebiliriz.

Tarama yöntemini kullanarak herhangi bir veriyi çıkartabilir ve daha sonra kullanmak üzere uygun bir JSON tarzı dosya formatına aktarabiliriz.

İlerleme

IronWebScraper hakkında daha fazla bilgi edinmek istiyorsanız, API Referans Belgelerimizi okumanızı ve sonra belgelerimizin eğitici kısımlarında yer alan örnekleri incelemeye başlamanızı öneririz.

Önerdiğimiz bir sonraki örnek, bir blogdan -örneğin WordPress blogu- metin içeriği nasıl çıkarabileceğimizi öğrendiğimiz C# "blog" web kazıma örneğidir. Bu, site göçlerinde oldukça yararlı olabilir.

Buradan, çok farklı sayfa türlerine sahip web siteleri, e-ticaret siteleri gibi kavramları ve ayrıca internette veri kazıma yaparken birden fazla vekil sunucu, kimlik ve giriş kullanma konularını inceleyebildiğimiz diğer ileri web kazıma eğitimi örneklerine geçebilirsiniz.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 137,906 | Sürüm: 2026.6 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronWebScraper
örnek çalıştır hedef sitenizi yapılandırılmış verilere dönüştürün.