Webscraping in C

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

IronWebScraper nedir?

IronWebScraper, geliştiricilerin programatik olarak web sitelerini okuyup içeriğini çıkarmalarına olanak tanıyan, C# ve .NET programlama platformu için bir sınıf kütüphanesi ve çerçevedir. Bu, web sitelerini veya mevcut intranetleri tersine mühendislik için ve onları tekrar veritabanlarına veya JSON verilerine dönüştürmek için idealdir. Ayrıca, internetten büyük hacimli belgeler indirmek için de kullanışlıdır.

Pek çok açıdan, Iron Web Scraper Python için Scrapy kütüphanesine benzerdir ancak C#'ın, özellikle web kazıma işlemi devam ederken kodu adım adım ilerletme ve hata ayıklama yeteneğinin avantajlarını kullanır.

Kurulum

İlk adımınız Iron Web Scraper'ı kurmak olacaktır, bunu NuGet üzerinden ya da web sitemizden DLL'i indirerek yapabilirsiniz.

İhtiyacınız olacak tüm sınıflar Iron Web Scraper ad alanında bulunabilir.

Install-Package IronWebScraper

Popüler Kullanım Durumları

Web Sitelerini Veritabanlarına Taşıma

IronWebScraper, web sitelerinizi yeniden yapılandırarak yapılandırılmış veritabanlarına dönüştürmenize olanak tanıyan araçlar ve yöntemler sağlar. Bu teknoloji, eski web sitelerinden ve intranetlerden içerik migrasyonu yaparken yeni C# uygulamanıza kullanışlıdır.

Web Sitelerini Taşıma

C# içinde bir web sitesinin veya kısmının içeriğini kolayca çıkarmak, web sitesi ve intranet kaynaklarının taşınması veya yükseltilmesinde zaman ve maliyet tasarrufuna araç tutabilir. Bu, doğrudan SQL dönüşümlerinden önemli ölçüde daha verimli olabilir, çünkü veriyi her web sayfasında görülebileceği gibi düzleştirir ve önceki SQL veri yapılarını anlamayı veya karmaşık SQL sorguları oluşturmayı gerektirmez.

Arama İndekslerini Doldurma

Iron Web Scraper, kendi web sitenize veya intranetinize yapılandırılmış veri okuma, her sayfayı okuma ve doğru veriyi çıkarması için gösterebilir ki bu da kuruluşunuz içindeki bir arama motorunun doğru bir şekilde doldurulmasını sağlar.

IronWebScraper, arama için içerik kazımanız adına 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 Web Scraper Kullanımı

Iron Web Scraper'ı nasıl kullanacağınızı öğrenmek için en iyi yol örneklere bakmaktır. Bu basit örnek, bir web sitesi blogundan başlıkları kazıyacak 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 okuyacak kendi sınıfımızı oluşturmamız gerekecek. Bu sınıf, Web Scraper'ı genişletecektir. Bu sınıfa bazı yöntemler ekleyeceğiz, Init dahil, burada başlangıç ayarlarını yapabilir ve ilk isteği başlatabiliriz, bu da daha sonra tüm web sitesinin kazınmasına neden olacak bir zincirleme reaksiyon yaratacaktır.

En az bir Parse yöntemi de eklemeliyiz. Ayrıştırma yöntemleri, internetten indirilen web sayfalarını okumak ve içeriği seçmek ve kullanım için ilgili metin ve/veya görselleri çıkarmak için jQuery benzeri CSS seçicileri kullanır.

Parse yöntemi içinde, tarayıcının takip etmeye devam etmesini istediğimiz ve hangilerini yok sayacağını belirleyebiliriz.

Kazıma yöntemi herhangi bir veriyi çıkarmak ve daha sonra kullanmak üzere uygun bir JSON tarzı dosya formatına döküm yapmak için kullanılabilir.

İlerleme

Iron Web Scraper hakkında daha fazla bilgi edinmek için API Referans Dokümantasyonu okumanızı ve ardından dokümantasyonumuzun öğreticiler kısmındaki örnekleri incelemeye başlamanızı öneriyoruz.

İncelemenizi önerdiğimiz bir sonraki örnek, bir Blog, örneğin bir WordPress blogundan metin içeriği nasıl çıkarabileceğimizi öğrenmek üzere C# "blog" web kazıma örneğidir. Bu, bir site taşınmasında çok faydalı olabilir.

Buradan, daha farklı türde sayfaların, e-ticaret web sitelerinin bulunduğu web siteleri gibi kavramlara baktığımız diğer ileri düzey web kazıma öğretici örneklerine geçebilirsiniz ve ayrıca internetten veri kazırken birden fazla vekil sunucu, kimlik ve oturum açma bilgilerini nasıl kullanacağımızı öğrenebilirsiniz.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimleri lisans derecesine sahiptir ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışmaktadır. Küçük yaşlardan itibaren kodlamaya ilgi duyan Darrius, bilişimi hem gizemli hem de erişilebilir buldu ve onu yaratıcılık ve problem çö...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 134,614 | Sürüm: 2026.4 just released
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronWebScraper
bir örneği çalıştır hedef sitenizi yapılandırılmış veri haline getirin.