LoginSignup
2
0

More than 3 years have passed since last update.

C#でスクレイピングしてみた

Last updated at Posted at 2021-04-26

お題目

これまでVBAでスクレイピングしていたが、ただいま勉強しているC#でもスクレイピングできるということで、サクッとやってみた。
その備忘録になります。

0. まずディレクトリ作成

mkdir testScraping
cd testScraping

1. 次にプロジェクトを作成、AngleSharpのNugetをセッティング

dotnet new console
dotnet add package AngleSharp --version 1.0.0-alpha-827

2. 次に言語のバージョンをプレビューを追記

(正直、理由は分かってません、涙)
この行追加、の1行を追記してください

testScraping.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <LangVersion>preview</LangVersion> <!-- この行追加 -->
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AngleSharp" Version="1.0.0-alpha-827" />
  </ItemGroup>

</Project>

3. ソースコード記入

次はもう下記のソースコードをProgram.csにまるまるコピペで大丈夫です

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

// 参照サイト
// https://qiita.com/okazuki/items/a4eb94f608bbc26c6a5f
// https://usefuledge.com/csharp-webscraping-anglesharp.html

var urlstring = "https://www.yahoo.co.jp/";

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"))
    foreach (var item in document.QuerySelectorAll("section#tabpanelTopics1 li"))
    {
        Console.WriteLine(item.TextContent.Trim());
    }

}
catch (System.Exception)
{
    throw;
}

4. 結果

そのスクレイピングの結果がスクリーンショット 2021-04-26 15.38.54.png

現時点のYahooがスクリーンショット 2021-04-26 15.40.42.png
です。

簡単ですね。

タグを構造的に指定したい場合は半角スペースで仕切れば大丈夫みたいです。document.QuerySelectorAll("section#tabpanelTopics1 li")
がそうですね。

もう少し複雑なスクレイピングにもトライしたいと思います。

〜おわり〜

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0