今天分享一個Visual Studio很實用的功能:Nuget 套件管理員
https://learn.microsoft.com/zh-tw/nuget/what-is-nuget
簡言之,NuGet 套件就是副檔名為 .nupkg 的單一 ZIP 檔案,內含已編譯程式碼 (DLL)、其他與該程式碼相關的檔案,以及包含套件版本號碼這類資訊的描述性資訊清單。 擁有要共用之程式碼的開發人員會建立套件,並將它們發行至公用或私人主機。 套件取用者會從適當的主機取得那些套件、將它們新增至其專案,然後在其專案程式碼中呼叫套件的功能。 NuGet 本身接著會處理所有中間詳細資料。
看完上面官方描述可能還是很不好理解,我們可以想像Nuget提供了其他人開發好的軟體工具包,只要去上面下載回來就能使用。比如想要透過C#來產生Word、Excel檔案並填入設計好的文字內容,直接從0開始寫恐怕非常困難,但Nuget上有個「NPOI」的套件,開發者已經寫好相關的功能,下載此套件就可以快速產生Word與Excel內容!
開啟Nuget套件管理員的方式,點選「工具」→「Nuget 套件管理員」→「管理方案的Nuget 套件」,如下圖:
如果有聽過Python這個程式語言的話,就算沒學過可能也會聽說適合用途在於AI相關或爬蟲資料。但是並不是只有Python才能寫爬蟲程式,C#也是可以的!
下面將示範利用「AngleSharp」套件,來抓取特定網站的資料內容:
打開Nuget套件管理員,搜尋「AngleSharp」套件並安裝
安裝過程會顯示於「輸出」視窗內,完成後最後一行會顯示「=== 已完成 ===」
建立ConsoleApp專案,程式目的是提供一組關鍵字與來源網站,即可自動抓取有該關鍵字的文章標題。程式碼如下:
static async Task Main(string[] args)
{
// 設定要爬取的網站網址
var url = "https://ithelp.ithome.com.tw/search?search=nuget&tab=article";
// 設定要爬取的關鍵字
var keyword = "Nuget";
// 建立 AngleSharp 的配置
var config = Configuration.Default.WithDefaultLoader();
// 使用 AngleSharp 連線到網站並取得文件
var document = await BrowsingContext.New(config).OpenAsync(url);
// 取得網站中所有文章的標題
var titles = document.QuerySelectorAll(".qa-list__title a")
.Where(a => a.TextContent.IndexOf(
keyword, StringComparison.OrdinalIgnoreCase) >= 0)
.Select(a => a.TextContent);
// 顯示搜尋結果
Console.WriteLine($"以下是符合 \"{keyword}\" 關鍵字的文章標題:");
Console.WriteLine();
foreach (var title in titles)
{
Console.WriteLine(title);
}
Console.ReadLine();
}
這段Code是將下面文字貼到ChatGPT上所產生的,可以透過此範例Code再去擴充/修改想要爬蟲的內容。提供C# 使用AngleSharp套件來爬蟲網站取得資料顯示的範例,專案架構用ConsoleApp,網站來源為https://ithelp.ithome.com.tw/,爬取關鍵字為「Nuget」,取得文章標題即可。
執行結果如下:
透過以上範例,我們了解使用Nuget中的套件可以很簡單地做出我們想要的功能,如果再搭配ChatGPT甚至連程式碼都不用自己寫,只需要針對客製或複雜需求去修改關鍵程式碼,寫Code真的是愈來愈輕鬆呢!
那麼今天的分享就到這囉!