C# で簡単にウェブスクレイピングをする方法を紹介します。
document.GetElementById
や document.QuerySelectorAll
などを使って簡単にHTMLエレメントを指定できます。
使用するライブラリ
AngleSharp というライブラリを使用します。
ソースコード
このコードでは、ページタイトルと、<h1 class="thumb">
のテキストを取得します。
using AngleSharp;
using AngleSharp.Html.Parser;
using System.Net;
using System.Threading.Tasks;
public async Task WebscrapingSample()
{
var urlstring = "https://usefuledge.com";
WebClient wc = new WebClient();
try
{
string htmldocs = wc.DownloadString(urlstring);
Console.WriteLine(htmldocs);
var config = Configuration.Default;
var context = BrowsingContext.New(config);
var document = await context.OpenAsync(req => req.Content(htmldocs));
Console.WriteLine(document.Title);
foreach ( var item in document.QuerySelectorAll("h1.thumb"))
{
Console.WriteLine(item.TextContent.Trim());
}
}
catch (System.Exception)
{
throw;
}
}
実行結果
こんな風に出力されると成功です。
Page 1 | Useful Edge
c# ClosedXMLを使用して、xlsxファイル内の文字列を検索する
バッチ処理で Oracle PLSQL を実行してリターンコードを得る
UiPath : Excel表のデータを取得してAccessデータベースへインサートする
広告を出すよりもファンを作ることの方が大事かもしれない
業務アプリを設計するときに大事なこと
アプリ開発を個人や少人数の会社に発注するメリットとデメリット
c#でExcelを編集可能なライブラリ
作業効率化を目的としたWindows・OfficeVBAアプリケーションを開発します
お問い合わせ
会社にお金を出させる方法。どうしたらシステム外注予算を確保してもらえるか
htmlソースのダウンロード
指定したURLのHTMLをダウンロードして変数 htmldocs
に格納します。
var urlstring = "https://usefuledge.com";
string htmldocs = wc.DownloadString(urlstring);
Console.WriteLine(htmldocs);
htmlドキュメントを Anglesharp の document オブジェクトに格納
3行目で、さきほど取得したhtmldocs
をセットして、document
オブジェクトを取得してます。
var config = Configuration.Default;
var context = BrowsingContext.New(config);
var document = await context.OpenAsync(req => req.Content(htmldocs));
ページタイトル取得
document オブジェクトの Title
プロパティで取得できます。
Console.WriteLine(document.Title);
h1 タグの thumb クラスで指定されているテキストを取得
document.QuerySelectorAll("h1.thumb")
でHTMLエレメントを指定します。
foreach で1つずつループします。
最後に、TextContent
プロパティで取得すれば完了です。
foreach ( var item in document.QuerySelectorAll("h1.thumb"))
{
Console.WriteLine(item.TextContent.Trim());
}
以上、C#でかんたんウェブスクレイピングでした。
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
リンク
コメント