2022年7月16日

【C#】AngleSharpによるHTMLスクレイピング

.NETでHTMLをスクレイピングする方法について書きます。

AngleSharp

HTMLスクレイピングするパッケージとしてHtml Agility Packも有名ですが、今回はAngleSharpでやってみることにしました。

NuGetでAngleSharpを入手します。

AngleSharpNeget
AngleSharp

Htmlファイル

テスト用として以下のHtmlファイルを準備しました。

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
	<div>
		<ul id="list">
			<li>東京</li>
			<li>大阪</li>
			<li>名古屋</li>
			<li>福岡</li>
			<li>札幌</li>
		</ul>
	</div>
	<div>
		<p id="contents">ああああああああああああああ</p>
	</div>
</body>
</html>

スクレイピング

		private void Button_Click(object sender, RoutedEventArgs e)
		{
			string FilePath = @"D:\test.html";
			var html = File.ReadAllText(FilePath, System.Text.Encoding.UTF8);
			var parser = new HtmlParser();              // HTMLParserのインスタンス生成
			var doc = parser.ParseDocument(html);       // htmlをパースする

			var items = doc.QuerySelectorAll("ul#list > li");
			foreach(var item in items)
			{
				Console.WriteLine(item.TextContent);
			}

			//id指定
			var h = doc.GetElementById("contents");
			if (h != null)
			{
				Console.WriteLine(h.TextContent);
			}
		}

8行目:QuerySelectorAllメソッドで、条件に会った要素を取得しています。

15行目:GetElementByIdで指定したID属性値を持つ要素を取得しています。

結果

出力ウインドウに以下のように結果が表示されました。欲しい結果が得られました。

東京
大阪
名古屋
福岡
札幌
ああああああああああああああ

Share this content: