C#でスクレイピングする。Curlコマンドでhtmlを取得し、AngleSharpを利用してparseする。
これは何
C#で、スクレイピングする例
注意書き
HTMLの取得は、Curlコマンドを利用している。
HTMLのParseは、AngleSharpを利用している。
AngleSharpのversionは0.11.0、
System.Text.Encoding.CodePagesのversionは4.3.0を利用している。
(AngleSharpと、CodePagesの、相性でエラーが出る模様で、他の方のページで、稼働実績のあったこの組み合わせを利用している。)
nugetを利用せず、DLLを取得して、利用している。
(nugetのファイルをzipとして解凍し、ファイルを取得している。)
DLLは、net46のフォルダ内のものを利用している。
実行コマンド例
ore_scrape.exe
コンパイル例
ore_scrape.exe
c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /reference:AngleSharp.dll;System.Text.Encoding.CodePages.dll; /target:exe ore_scrape.cs
ソース
ore_scrape.cs
//c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /reference:AngleSharp.dll;System.Text.Encoding.CodePages.dll; /target:exe ore_scrape.cs
using System;
using System.IO;
using System.Diagnostics;
using AngleSharp.Html.Parser;
public class ore_scrape
{
////Main
public static void Main(string[] args){
path = System.Windows.Forms.Application.StartupPath + "/";
string local_url = path + "temp.html";
my_curl("https://www.yahoo.co.jp",local_url);
my_parse(local_url);
}///Main
///--==--==--==
private static void my_curl(string p1,string p2){
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
string p0 = "/c curl " + p1 + " > " + p2;
processStartInfo.Arguments = p0;
//processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = true;
Process process = Process.Start(processStartInfo);
process.WaitForExit();
process.Close();
return;
}//--==--==--==
////--------------------
private static void my_parse(string parse_url){
var html = File.ReadAllText(parse_url, System.Text.Encoding.UTF8);
var parser = new HtmlParser();
var doc = parser.ParseDocument(html);
var classpList = doc.GetElementsByTagName("h1");
foreach (var c in classpList)
{
string t;
t = c.TextContent;
t = t.Trim();
Console.WriteLine(t);
File.AppendAllText(@".\temp.txt", t + Environment.NewLine);
}
}///--------------------
}
実行例
//c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /reference:AngleSharp.dll;System.Text.Encoding.CodePages.dll; /target:exe ore_scrape.cs
using System;
using System.IO;
using System.Diagnostics;
using AngleSharp.Html.Parser;
public class ore_scrape
{
////Main
public static void Main(string[] args){
path = System.Windows.Forms.Application.StartupPath + "/";
string local_url = path + "temp.html";
my_curl("https://www.yahoo.co.jp",local_url);
my_parse(local_url);
}///Main
///--==--==--==
private static void my_curl(string p1,string p2){
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
string p0 = "/c curl " + p1 + " > " + p2;
processStartInfo.Arguments = p0;
//processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = true;
Process process = Process.Start(processStartInfo);
process.WaitForExit();
process.Close();
return;
}//--==--==--==
////--------------------
private static void my_parse(string parse_url){
var html = File.ReadAllText(parse_url, System.Text.Encoding.UTF8);
var parser = new HtmlParser();
var doc = parser.ParseDocument(html);
var classpList = doc.GetElementsByTagName("h1");
foreach (var c in classpList)
{
string t;
t = c.TextContent;
t = t.Trim();
Console.WriteLine(t);
File.AppendAllText(@".\temp.txt", t + Environment.NewLine);
}
}///--------------------
}
※www.yahoo.co.jpのh1タグを取得している
※取得した結果の例
参考サイト
nuget
https://www.nuget.org/packages/AngleSharp
https://www.nuget.org/packages/System.Text.Encoding.CodePages/
https://www.nuget.org/api/v2/package/AngleSharp/0.11.0
https://www.nuget.org/api/v2/package/System.Text.Encoding.CodePages/4.3.0
AngleSharp
2020-01-31
C#でAngleSharpを使ってHTMLをパースする
https://emotionwave.hatenablog.com/entry/2020/01/31/100000
2019.4.24
[C#] AngleSharpでHtmlParserの生成をするとFileNotFoundExceptionの例外が出る問題
https://d-vecter.blogspot.com/2019/04/c-anglesharphtmlparserfilenotfoundexcep.html
Author And Source
この問題について(C#でスクレイピングする。Curlコマンドでhtmlを取得し、AngleSharpを利用してparseする。), 我々は、より多くの情報をここで見つけました https://qiita.com/santarou6/items/8f860138494ba6d0950e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .