AngleSharpで属性の値を取得する方法

AngleSharpで属性の値を取得する方法について紹介します。この記事では、href属性の値を取得してみます。

0. この記事のまとめ

属性の値は、GetAttribute("属性名") で取得できます。

href属性を取得するには、

GetAttribute("href")

で、取得することができます。

1. AngleSharpとは

AngleSharp は、オープンソースの.net HTMLパーサーライブラリで、ウェブスクレイピングができるライブラリです。

2. Aタグのhref属性を取得するソースコード全文

using System;

using AngleSharp;
using AngleSharp.Html.Parser;
using System.Net;
using System.Threading.Tasks;

static void Main(string[] args)
{
    Console.WriteLine("Hello World!");
    Task t =  WebscrapingSample();
}

static async Task WebscrapingSample()
{

    var urlstring = "https://usefuledge.com";

    WebClient wc = new WebClient();
    try
    {
        string htmldocs = wc.DownloadString(urlstring);

        var config = Configuration.Default;
        var context = BrowsingContext.New(config);
        var document = await context.OpenAsync(req => req.Content(htmldocs));

        foreach ( var item in document.QuerySelectorAll("a"))
        {
            Console.WriteLine(item.TextContent.Trim() + " " + item.GetAttribute("href"));
        }

    }
    catch (System.Exception)
    {
        throw;
    }
}

以下のように出力されれば、成功です。

Useful Edge /
Menu
Close
Home /
about me /profile.html
Archives /archives/index.html
仕事の依頼 /appdev.html
お問い合わせ /contact.html
ExecNoteでNodeJSコードスニペットを管理しよう /execnote-start-nodejs.html
9月 7, 2020 /execnote-start-nodejs.html
 #1-ExecNoteとは?
https://execnote.app/
https://execnote.app/ #2-ドキュメントと一緒に保存できる #3-ExecNoteで新しいファイルを作成しよう #4-カレントディレクトリはどこ? #3-標準出力 #4-コード実行方法 #5-コード実行前に確認画面を表示するには? #5-乱数生成 #6-forループ #8-おわりに https://execnote.app
https://execnote.app/
https://execnote.app/ Tweet https://twitter.com/share?ref_src=twsrc%5Etfw https://b.hatena.ne.jp/entry/ https://execnote.app/index.html ≫ExecNote のダウンロードはこちらから https://execnote.app/index.html ≫プロフィールはこちら /profile.html ≫システム開発のご依頼はこちら /appdev.html ≫お問い合わせはこちら /contact.html ≫Twitter https://twitter.com/Harus0313/ ExecNote /tags/ExecNote/index.html

3. href属性を取得するコード

href 属性は以下のコードで取得しています。

foreach ( var item in document.QuerySelectorAll("a"))
{
    Console.WriteLine(item.TextContent.Trim() + " " + item.GetAttribute("href"));
}

foreach文で、Aタグを抽出して1レコードずつループします。item変数に格納されます。

foreach ( var item in document.QuerySelectorAll("a"))
{
    ...
}

href属性の値はitem.GetAttribute("href")で取得します。

以下のコードで、Aタグ内のテキストと、href属性の値を標準出力に出力します。

Console.WriteLine(item.TextContent.Trim() + " " + item.GetAttribute("href"));

コメント

タイトルとURLをコピーしました