【问题标题】:Get XPath from clicked HtmlElement in WebBrowserControl从 WebBrowserControl 中单击的 HtmlElement 获取 XPath
【发布时间】:2014-01-11 05:54:56
【问题描述】:

如何从 WebBrowserControl 中单击的 HtmlElement 中获取 XPath?

这就是我检索点击的 HtmlElement 的方式:

System.Windows.Forms.HtmlDocument document = this.webBrowser1.Document;
document.MouseUp += new HtmlElementEventHandler(this.htmlDocument_Click);

private void htmlDocument_Click(object sender, HtmlElementEventArgs e)
{
    HtmlElement element = this.webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition);
}

我想点击网站上的特定元素(价格、文章编号、描述等)并获取它们的 XPath 表达式。

谢谢!

【问题讨论】:

    标签: c# xpath webbrowser-control


    【解决方案1】:

    XPath 表达式不是 HTML 的标准特性(与 XML 不同)。如果您希望获得一个元素 XPath,以后可以与 Html Agility Pack 一起使用,您至少有两个选择:

    1. 使用 HtmlElement.Parent 遍历元素的 DOM 祖先树并构造 手动 XPath。

    2. 使用 Html Agility Pack 本身并执行以下操作(未经测试):

    HtmlElement element = this.webBrowser1.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;
    

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 2012-05-02
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多