可怕的回答论坛似乎死了,所以我在这里重新发布这个
首先,在开始学习Awesomium之前,我使用了HtmlAgilityPack库来满足所有的解析需求,但是这个库不再被更新,我决定迁移到Awesomium。(因此,我的方法是基于我在HAP方面的经验)
我想出了如何用Awesomium解析对象列表,但我不知道如何使用它们。例如:
public dynamic FindNodes(string xpath, dynamic node = null, WebView wv = null)
{
if (wv == null) wv = mainView;
dynamic nodes = (JSObject)wv.ExecuteJavascriptWithResult(String.Format("document.evaluate(\"{0}\", {1}, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null)", xpath, "document")));
int length = nodes.snapshotLength;
for (int i = 0; i < length; i++)
{
Console.WriteLine(nodes.snapshotItem(i).innerText);
}
return nodes;
}问题在我返回节点后开始。我希望对每个节点执行一系列搜索,因此在返回它们之后,我决定以下内容应该可以工作:
dynamic weakCounters = ap.FindNodes("//div[@id='weaklist']/ul/li");
for (int i = 0; i < weakCounters.snapshotLength; i++)
{
ap.FindNodes("//h3[@class='black']", weakCounters.snapshotItem(i));
}但事实并非如此。我试图获取列表长度的部分,当然,如果我试图直接获取项目的快照,就会得到一个错误。
我明白,我在某处犯了一个巨大的错误。我只是不明白在哪里。
编辑:令人惊讶的是,如果我做了下面的工作,一切看起来都很好,但是每次我需要访问它时,创建一个新的变量看起来都不太合适(这简直是胡说八道)
dynamic weakCounters = ap.FindNodes("//div[@id='weaklist']/ul/li");
dynamic nodes = weakCounters;
for (int i = 0; i < nodes.snapshotLength; i++)
{此外,如何将提取的结果(元素)传递回awesomium,以便进行“子搜索”?
发布于 2014-03-02 13:38:58
http://answers.awesomium.com/questions/4276/parsing-with-awesomium.html交叉贴出的答案
为什么需要Awesomium进行HTML解析?HtmlAgilityPack怎么了? 下载Awesomium页面(如果这是您需要它的原因),获取HTML,用HtmlAgilityPack解析它。 像这样的解析应该非常慢(如果它返回许多元素)。
https://stackoverflow.com/questions/22114031
复制相似问题