Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9541

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

$
0
0
お題目 これまで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. 結果 そのスクレイピングの結果が 現時点のYahooが です。 簡単ですね。 タグを構造的に指定したい場合は半角スペースで仕切れば大丈夫みたいです。document.QuerySelectorAll("section#tabpanelTopics1 li") がそうですね。 もう少し複雑なスクレイピングにもトライしたいと思います。 〜おわり〜

Viewing all articles
Browse latest Browse all 9541

Trending Articles