我需要从html页面解析/提取信息。 基本上我正在做的是使用System.Net.WebClient将页面加载为字符串,并使用HTML Agility Pack获取html标签内的内容(表单,标签,imputs等)。
但是,某些内容位于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可以帮忙吗? 我真的很感激任何帮助。
提前致谢。
答案 0 :(得分:1)
HAP不会为你解析javascript - 它最好的办法是解析元素的内容。
javascript.net可能适合该法案。
答案 1 :(得分:1)
您想要脚本标记内容的哪些部分?你期待什么样的系列。您始终可以使用下面的
选择脚本标签 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
}
答案 2 :(得分: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; }
}