0

HTMLページから情報を解析/抽出する必要があります。基本的に、私が行っているのは、System.Net.WebClientを使用してページを文字列としてロードし、HTML Agility Packを使用してhtmlタグ(フォーム、ラベル、入力など)内のコンテンツを取得することです。

ただし、次のように、一部のコンテンツはjavascriptスクリプトタグ内にあります。

<script type="text/javascript">
//<![CDATA[
var itemCol = new Array();

itemCol[0] = {
    pid: "01010101",
    Desc: "Some desc",
    avail: "Available",
    price: "$10.00"
};

itemCol[1] = {
    pid: "01010101",
    Desc: "Some desc",
    avail: "Available",
    price: "$10.00"
};

//]]>
</script>

では、どうすればそれを.NETのコレクションに解析できますか?HTML Agility Packはそれを支援できますか?助けてくれて本当に感謝しています。

前もって感謝します。

4

3 に答える 3

1

javascript.net ライブラリを使用すると、コレクションを取得できます

 using (JavascriptContext context = new JavascriptContext())
  {
    context.SetParameter("data", new MyObject());

     StringBuilder s = new StringBuilder();

    foreach (XPathNavigator nav in scriptTags)
    {
       s.Append(nav.InnerXml);
    }

  s.Append(";data.item = itemCol;");
  context.Run(s.ToString());

  MyObject o = context.GetParameter("data") as MyObject;

次に、次のようなデータ構造を持っています

   class MyObject
   {
     public object item { get; set; }
   }
于 2012-06-26T00:21:10.333 に答える
1

script タグ内のコンテンツのどの部分が必要ですか? どんなコレクションを期待していますか。以下を使用して、いつでもスクリプトタグを選択できます

  HtmlDocument document = new HtmlDocument();
  document.Load(downloadedHtml);
  XPathNavigator n = document.CreateNavigator();
  XPathNodeIterator scriptTags = n.Select("//script");

  foreach (XPathNavigator nav in scriptTags)
  {
    string innerXml = nav.InnerXml;

    // Parse inner xml using regex
  }
于 2012-06-25T23:53:59.197 に答える
1

HAP は JavaScript を解析しません。要素の内容を解析するのが最善です。

javascript.netは法案に適合する可能性があります。

于 2012-06-25T20:53:42.210 に答える