Webscraping in C
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
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.

