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

