.NET使用AngleSharp抓取網(wǎng)站信息,超簡(jiǎn)單
前言
最近小編接到一個(gè)抓取全國(guó)地區(qū)的任務(wù),在Github找到了一個(gè)開源工具AngleSharp。AngleSharp 是一個(gè)強(qiáng)大的 .NET 庫(kù),它為我們提供了一種方便且靈活的方式來(lái)處理 HTML 和 XML 文檔。在這篇文章中,我們將使用 AngleSharp 來(lái)抓取全國(guó)地區(qū)的信息。
準(zhǔn)備工作
首先,我們用Visual Studio 新建一個(gè)控制臺(tái)程序,并安裝 AngleSharp。可以通過(guò) NuGet 包管理器控制臺(tái)或 Visual Studio 的包管理器來(lái)安裝 AngleSharp:
Install-Package AngleSharp
編寫抓取代碼
接下來(lái),我們將編寫一個(gè)簡(jiǎn)單的 C# 程序,使用 AngleSharp 抓取地區(qū)網(wǎng)站信息。我們找到民政局全國(guó)區(qū)域的網(wǎng)站,循環(huán)分級(jí)提取地區(qū)的信息。示例代碼如下:
using AngleSharp;using AngleSharp.Html.Dom;
//民政局網(wǎng)站地區(qū)網(wǎng)址var url = "http://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2022/index.html";var context = BrowsingContext.New(Configuration.Default.WithDefaultLoader());
// 異步打開指定的URL,并獲取返回的文檔對(duì)象var dom = context.OpenAsync(url).Result;
// 使用 CSS 選擇器選擇表格中的所有省級(jí)行的超鏈接元素var itemList = dom.QuerySelectorAll("table.provincetable tr.provincetr td a");
// 遍歷每個(gè)超鏈接元素foreach (IHtmlAnchorElement item in itemList){// 輸出地區(qū)的文本內(nèi)容Console.WriteLine("地區(qū):" + item.TextContent);
// 輸出下級(jí)鏈接的地址,便于繼續(xù)循環(huán)下級(jí)。Console.WriteLine("下級(jí)鏈接:" + item.Href);}
打印出來(lái)的效果如下:

上面代碼AngleSharp成功抓取了所要的地區(qū)。它的優(yōu)點(diǎn)是可以用CSS選擇器來(lái)獲取元素,減少了代碼的使用量及整潔度。
結(jié)語(yǔ)
AngleSharp抓取網(wǎng)頁(yè)只是其中的一項(xiàng),它提供了一個(gè)強(qiáng)大而靈活的工具集,使開發(fā)人員能夠以 .NET 平臺(tái)為基礎(chǔ)構(gòu)建各種 Web 相關(guān)應(yīng)用。通過(guò)使用 AngleSharp,開發(fā)人員可以輕松地處理 Web 內(nèi)容,從而更高效地開發(fā)和維護(hù)其應(yīng)用程序。
git地址:github.com/AngleSharp/AngleSharp
關(guān)注公眾號(hào)↑↑↑:DotNet開發(fā)跳槽?
