HTML Agility Pack パーサーにフィードできるように、自分の ASPX ページをスクレイピングしようとしています。私はあらゆる方法を試しましたが、このインスタンスで機能するのは文字列だけです。
次のコードを使用して、外側のコントロールを文字列に変換しています。
static string ConvertControlToString(Control ctl)
{
string s = null;
var sw = new StringWriter();
using (var w = new HtmlTextWriter(sw))
{
ctl.RenderControl(w);
s = sw.ToString();
}
return s;
}
いくつかの厄介な不具合を除いて、コンセプトは機能します。「コントロールは runat=server を持つフォーム内にある必要があります」というメッセージが表示されることがあります。ボタン、更新パネルなど、ポストバックを引き起こすコントロールによってトリガーされるようです。
明確にするために、私のページはフォームにあるので、それは問題ではありません。
HTML アジリティ パック パーサーを別の方法で動作させるか、コードをエラーなしで文字列に変換するか、問題の解決策を試して解決する必要があります。それは問題ではありません-私は物事を機能させる必要があるだけです。