我正在尝试编写一个应用程序,它在Web浏览器中获取节点的xpath,然后将其存储以便稍后进行抓取。
我有这个用于获取浏览器的点击事件:
private void htmlDocument_Click(object sender, HtmlElementEventArgs e)
{
HtmlElement element = this.wbrBrowser.Document.GetElementFromPoint(e.ClientMousePosition);
var savedId = element.Id;
var uniqueId = Guid.NewGuid().ToString();
element.Id = uniqueId;
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(element.Document.GetElementsByTagName("html")[0].OuterHtml);
element.Id = savedId;
var node = doc.GetElementbyId(uniqueId);
var xpath = node.XPath;
lblXpath.Text = xpath;
lblPrice.Text = GetPrice(xpath);
}
它"似乎"上班。它确实返回" / html [1] / body [1] / div [3] / div [2] / div [3] / div [1] / div [1] / ul [1]的xpath /锂[2] /跨度[2]"
现在我有了这个尝试使用存储的xpath获取innertext:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(lstURL.Text);
XPathNavigator docNav = doc.CreateNavigator();
XPathNavigator node = docNav.SelectSingleNode(xpath);
if (node != null)
{
price = node.Value;
}
else
{
MessageBox.Show("Error: Node was Null!");
}
return price;
}
但是每次尝试第二种方法时,节点都为空。我无法弄清楚它是否是xpath im检索的问题,或者当它厌倦了刮取信息时的xpath。我猜测我的一种方法中的代码是错误的,但我无法弄清楚哪一种。