在 C# 中的網路爬蟲
IronWebScraper 是什麼?
IronWebScraper 是一個針對 C# 和 .NET 編程平台的類庫與框架,允許開發者以程式化的方式讀取網站並提取其內容。 這非常適合對現有網站或內部網進行逆向工程,並將它們轉換回數據庫或JSON數據。 它也適用於從網際網路下載大量文件。
在許多方面,Iron Web Scraper 與 Python 的 Scrapy 庫相似,但它利用了 C#的優勢,特別是在網絡抓取過程中進行代碼逐步執行和調試的能力。
安裝
您的第一步將是安裝 Iron Web Scraper,您可以從NuGet或由下載DLL從我們的網站上。
您將需要的所有類別都可以在 Iron Web Scraper 命名空間中找到。
PM > Install-Package IronWebScraper
熱門使用案例
將網站遷移到數據庫
IronWebScraper 提供工具和方法,讓您能夠將您的網站重新編寫回結構化數據庫。 此技術在將內容從過時的網站和內部網遷移到您的新 C# 應用程式時非常有用。
遷移網站
能夠在C#中輕鬆提取部分或完整網站的內容,可減少遷移或升級網站和內部網路資源的時間和成本。 這比直接的 SQL 轉換要高效得多,因為它將數據壓平到每個網頁上可見的內容,並且不需要了解以前的 SQL 數據結構,也不需要構建複雜的 SQL 查詢。
建立搜尋索引
Iron Web Scraper 可以指向您自己的網站或內部網路以讀取結構化數據,讀取每個頁面並提取正確的數據,以便準確填充組織內的搜索引擎。
IronWebScraper 是抓取搜索索引內容的理想工具。 IronSearch這類搜索應用程序可以從IronWebScraper讀取結構化內容,以構建強大的企業搜索系統。
使用 Iron Webscraper
要學習如何使用Iron Web Scraper,最好查看一些範例。 這個基本示例創建了一個類別,用於從網站博客抓取標題。
using IronWebScraper;
namespace WebScrapingProject
{
class MainClass
{
public static void Main(string [] args)
{
var scraper = new BlogScraper();
scraper.Start();
}
}
class BlogScraper : WebScraper
{
public override void Init()
{
this.LoggingLevel = WebScraper.LogLevel.All;
this.Request("https://ironpdf.com/blog/", Parse);
}
public override void Parse(Response response)
{
foreach (var title_link in response.Css("h2.entry-title a"))
{
string strTitle = title_link.TextContentClean;
Scrape(new ScrapedData() { { "Title", strTitle } });
}
if (response.CssExists("div.prev-post > a [href]"))
{
var next_page = response.Css("div.prev-post > a [href]")[0].Attributes ["href"];
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
{
public override void Init()
{
this.LoggingLevel = WebScraper.LogLevel.All;
this.Request("https://ironpdf.com/blog/", Parse);
}
public override void Parse(Response response)
{
foreach (var title_link in response.Css("h2.entry-title a"))
{
string strTitle = title_link.TextContentClean;
Scrape(new ScrapedData() { { "Title", strTitle } });
}
if (response.CssExists("div.prev-post > a [href]"))
{
var next_page = response.Css("div.prev-post > a [href]")[0].Attributes ["href"];
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
Public Overrides Sub Init()
Me.LoggingLevel = WebScraper.LogLevel.All
Me.Request("https://ironpdf.com/blog/", AddressOf Parse)
End Sub
Public Overrides Sub Parse(ByVal response As Response)
For Each title_link In response.Css("h2.entry-title a")
Dim strTitle As String = title_link.TextContentClean
Scrape(New ScrapedData() From {
{ "Title", strTitle }
})
Next title_link
If response.CssExists("div.prev-post > a [href]") Then
Dim next_page = response.Css("div.prev-post > a [href]")(0).Attributes ("href")
Me.Request(next_page, AddressOf Parse)
End If
End Sub
End Class
End Namespace
要抓取特定網站,我們將必須創建自己的類別來讀取該網站。此類別將擴展 Web Scraper。 我們將在這個類別中添加一些方法,包括 init,在此方法中我們可以設定初始設定並開始第一個請求,這將會引發連鎖反應,從而抓取整個網站。
我们还必须至少添加一个Parse
方法。 解析方法讀取從互聯網下載的網頁,並使用類似於 jQuery 的 CSS 選擇器來選擇內容並提取相關的文本和/或圖像以供使用。
在 Parse
方法中,我們還可以指定哪些超連結需要爬蟲繼續跟隨,以及哪些將被忽略。
我們可以使用 scrape 方法來提取任何數據,並將其轉儲到方便的 JSON 格式文件中,以便日後使用。
向前邁進
要了解更多有關Iron Web Scraper的資訊,我們推薦您閱讀API參考文件,然後開始查看我們文件中教程部分的示例。
下一個推薦您查看的範例是C# "博客" 網頁刮取範例,我們將學習如何從博客中提取文字內容,例如WordPress博客。 這在網站遷移中可能非常有用。
從那裡,您可能會繼續查看其他高級網頁抓取教程例如,我們可以觀察一些概念,例如具有多種類型頁面的網站、電子商務網站,以及在從互聯網抓取數據時如何使用多個代理、身份和登錄。