前提・実現したいこと
C#のフォームアプリケーションで
用意したHTMLのソースを解析して、
指定した会社名の行をすべて抜き出して、ファイルに保存をする処理を実装したいです。
発生している問題・エラーメッセージ
1
欲しい情報が抜き出せない、全件抽出してしまっている
2
抜き出したデータをファイルに保存すると、抜き出したはずの文字列ではなく
txt
1System.Linq.Enumerable+WhereEnumerableIterator`1[HtmlAgilityPack.HtmlNode] 2 3```という文字列が表示される 4 5 6今回はデータが3つあるので 7```txt 8System.Linq.Enumerable+WhereEnumerableIterator`1[HtmlAgilityPack.HtmlNode] 9System.Linq.Enumerable+WhereEnumerableIterator`1[HtmlAgilityPack.HtmlNode] 10System.Linq.Enumerable+WhereEnumerableIterator`1[HtmlAgilityPack.HtmlNode]
というデータが保存されてしまう
該当のソースコード
HTML
1<div class="job-item"> 2 3 <p class="company"> 4 <span>ABC株式会社</span> 5 </p> 6 7 <h2 class="title">インフラエンジニア</h2> 8 9 <p class="main">エンジニアがスキル・収入UPできる環境</p> 10 11</div> 12 13 14 15<div class="job-item"> 16 17 <p class="company"> 18 <span>株式会社あいうえお</span> 19 </p> 20 21 <h2 class="title">PM候補</h2> 22 23 <p class="main">スキルを活かしたい方</p> 24 25</div> 26 27 28 29<div class="job-item"> 30 31 <p class="company"> 32 <span>ABC株式会社</span> 33 </p> 34 35 <h2 class="title">WEBエンジニア</h2> 36 37 <p class="main">エンジニアがスキル・収入UPできる環境</p> 38 39</div>
C#
1var doc = new HtmlAgilityPack.HtmlDocument(); 2 3//HTMLファイル読み込み 4StreamReader sr = new StreamReader(@"html.txt", Encoding.GetEncoding("Shift_JIS")); 5 string str = sr.ReadToEnd(); 6 sr.Close(); 7 8 9//読み込んだHTMLをパース 10doc.LoadHtml(str); 11 12//会社紹介の行全体(job-item)を読み込み、companyの中身(会社名)がABC株式会社の行を抜き出したい 13var nodes = doc.DocumentNode.SelectNodes(@"//*[@class=""job-item""]") 14 .Select(y => y.Descendants() 15 .Where(x => x.Attributes["class"].Value == "company") 16 .Where(x => x.InnerText.Trim() == "ABC株式会社")); 17 18//取得したデータをファイルに書き込み 19using (var wt = new StreamWriter(@"get.txt", false, Encoding.GetEncoding("shift_jis"))) 20 { 21 foreach (var node in nodes) 22 { 23 wt.WriteLine(node); 24 } 25 }
試したこと
取得した文字列が表示されないのは、nodeにInnerTextプロパティをつけてみましたが、HtmlNode型には定義されていないようで使用できませんでした。
LINQの部分は調べながら何度も書き直しましたが、思い通りの動きをさせられなかったです。
補足情報(FW/ツールのバージョンなど)
VisualStudio 2019
HtmlAgilityPack 1.11.24
理想
txt
1ABC株式会社 2インフラエンジニア 3エンジニアがスキル・収入UPできる環境 4 5ABC株式会社 6WEBエンジニア 7エンジニアがスキル・収入UPできる環境 8