■78282 / inTopicNo.3) |
Re[2]: ウェブサイトから取得したHtmlソースの欠損表示について |
□投稿者/ くなーら (23回)-(2016/01/03(Sun) 20:17:15)
|
返信ありがとうございます。
> 何を作っているのか
○現在はWPFで作成しています。
ただし、これはプロジェクト作成時にテストであること以外、
特に何も考えていなかっただけで、WPFであることの理由はありません。
将来はタスクスケジューラから毎朝に実行される、Consoleアプリにしようとは思っています。
>それで何をしようとしているのか、
○お気に入りサイトのコンテンツの見出しをエディターに出力しようと思っています。
>あなたの開発環境
○下記になります。
・OS:Windows7 64bit
・IDE:VisualStudio2015Community
・言語:C#
・アプリケーション対象フレームワーク:.NetFlamework 4.5.2
・PCにインストールされてる最新の.NetFlamework:4.6.1
・構成:アクティブ(Debug)
・プラットフォーム:アクティブ(Any CPU)
> その際、ついでに手段 1 〜 4 をもっと具体的に、
>どのサイトに
○質問の原因となったのは、下記サイトになります。
http://www.hatena.ne.jp/
>どのように
○下記ソースのように、WebRequestを使っています
//wPathとは、上記WebSiteのhttp://www.hatena.ne.jp/
var req = (HttpWebRequest)WebRequest.Create(wPath);
//警告があるかもしれないので?UserAgentに文通先設定(マナーらしい
//迷惑投稿者判定避けのため省略したり和風にしたり
req.UserAgent = @" 文通先 XXX@
名前 XXXX";
//おまじない。後で調べる
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
//クッキー設定で確実に取得?
CookieContainer cc = new CookieContainer();
req.CookieContainer = new CookieContainer();
req.CookieContainer.Add(cc.GetCookies(req.RequestUri));
//Htmlの取得とストリーム用意
using (var res = (HttpWebResponse)req.GetResponse())
using (var resSt = res.GetResponseStream())
using (var sr = new StreamReader(resSt, Encoding.UTF8))
{
//検証用に出力
string source = sr.ReadToEnd();
this.txtHeadleine.Text = source;
Console.WriteLine(sr.ReadToEnd());//@
Console.WriteLine(this.txtHeadleine.Text);//C
}
〜以下正規表現で見やすく加工したり〜
> 要求をかけて応答を取得してそれの何を「出力ウィンドウ」に表示したか、
○下記キャプチャのように、IDEの「表示」タブから
表示の切り替えが出来るウィンドウ「出力」です。
https://gyazo.com/9c4a98c4195d3c1a14a713d47aa1b32e
> 「テキストビジュアライザー」とは何か、
○下記キャプチャのように、デバッグ時に値を見る時に使用されるウィンドウ?です。
https://gyazo.com/f718d2698f194796d5c01bddff5b3ac4
>「テキストコントロール」とは何
○下記キャプチャのように、WPF上に設置したコントロールのテキストボックスです。
https://gyazo.com/b266d2a2f6455a37e468d9fcff1341b6
>「Htmlソースを入れる」とはどういうことか
○PF上に設置したコントロールのテキストボックスのプロパティ「text」に、
Htmlソースという文字列データを格納することです。
>手段 1 〜 4 をもっと具体的に
1.上記ソースの@にあたります。
Console.WriteLine(sr.ReadToEnd());
2.下記キャプチャのように確認しました。
https://gyazo.com/a291a3223eda536e9acafbfaffedda7e
3.下記キャプチャのように確認しました。
https://gyazo.com/ac9894a44dea0f8e676d07daaaad3eac
4.上記ソースのCにあたります。
Console.WriteLine(this.txtHeadleine.Text);//C
まとめますと、本質問は、
https://gyazo.com/ac9894a44dea0f8e676d07daaaad3eac
このような画面上のコントロールに出力された結果や、
文字列型インスタンスの中身をテキストビジュアライザーで直に見に行った結果が、
https://gyazo.com/9c4a98c4195d3c1a14a713d47aa1b32e
上記キャプチャの出力ウィンドウに表示する結果と何故か異なるので、
その理由が知りたい、というものです。
他に不明条件等ありましたら、仰って下さい。
長文失礼しました。
/*
バッチ組め!と言われそうな目的ですね......
*/
|
|