C# 如何使用WPF WebBrowser组件从网页读取元素内容

C# 如何使用WPF WebBrowser组件从网页读取元素内容,c#,.net,wpf,browser,C#,.net,Wpf,Browser,如何使用WPF WebBrowser组件从C中的网页获取元素值 myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted); 例如,我想从这个页面获取这个值1.7655 myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted); 谢谢您有几个选项可以从网页中读取值 myBrowser.

如何使用WPF WebBrowser组件从C中的网页获取元素值

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);
例如,我想从这个页面获取这个值1.7655

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);

谢谢

您有几个选项可以从网页中读取值

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);
在webbrowser控件中获取页面。然后尝试找出包含所需值的元素是否具有特定名称,并从webbrowser控件的document属性获取该元素。 使用HtmlAgilityPack分析该网页的html,以找到元素并从中获取值。 尝试找出网页是否具有特定的结构,并使用正则表达式来查找所需的值可能很棘手! 所以,你看,你有很多方法来找到你想要的价值,我认为这不是所有的选择。
所以,继续努力,花点精力来获得这个价值。而且,如果您有关于某个问题的问题,请不要犹豫,再次询问堆栈溢出问题。但是,请花些时间来阐述你的问题。记住:一个好的问题往往会得到好的答案

您有几个选项可以从网页读取值

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);
在webbrowser控件中获取页面。然后尝试找出包含所需值的元素是否具有特定名称,并从webbrowser控件的document属性获取该元素。 使用HtmlAgilityPack分析该网页的html,以找到元素并从中获取值。 尝试找出网页是否具有特定的结构,并使用正则表达式来查找所需的值可能很棘手! 所以,你看,你有很多方法来找到你想要的价值,我认为这不是所有的选择。
所以,继续努力,花点精力来获得这个价值。而且,如果您有关于某个问题的问题,请不要犹豫,再次询问堆栈溢出问题。但是,请花些时间来阐述你的问题。记住:一个好的问题往往会得到好的答案

没有通用的方法从随机元素中获取值-您需要知道特定页面的HTML结构,以及如何找到要查找的元素。但是如果你知道这两个,你可以把页面读入某种HTML文档中,如果能保证HTML的结构正确,那么XmlDocument就可以工作,然后从中获得值

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);

或者,您可以通过某种HTML清理来运行页面?然后将其加载到XmlDocument中。这种方法的一个缺点是页面的结构在清理过程中可能会发生变化。

没有通用的方法从随机元素中获取值-您需要知道特定页面的HTML结构,以及如何找到要查找的元素。但是如果你知道这两个,你可以把页面读入某种HTML文档中,如果能保证HTML的结构正确,那么XmlDocument就可以工作,然后从中获得值

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);
或者,您可以通过某种HTML清理来运行页面?然后将其加载到XmlDocument中。这种方法的一个缺点是页面结构可能在清理过程中发生变化。

在调用的导航方法打开网页后,DocumentCompleted事件到达,您可以安全地浏览页面内容。请注意,此事件有时会多次发生。WebBrowser的Document属性包含已处理格式的HTML,称为DOM树。不幸的是,您无法轻松使用此属性,因为它只是一个对象。该功能尚未在2011年12月的WPF中完成

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);
我会用这个来代替。如果将其嵌入到一个WPF应用程序中,则可以在WPF应用程序中使用它。这个类是完整的:它的Document属性是一个HtmlDocument对象,带有一个Body属性,它是一个包含页面内容的。您可以递归地遍历DOM树以找到所需的元素并读取其内部文本,或者只需使用正则表达式或函数处理整个页面的文本

调用的Navigate方法打开网页后,DocumentCompleted事件将到达,您可以安全地浏览页面内容。请注意,有时此事件会多次发生。WebBrowser的Document属性包含已处理格式的HTML,称为DOM树。不幸的是,您无法轻松使用此属性,因为它只是一个对象。该功能尚未在2011年12月的WPF中完成

myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);
我会用这个来代替。如果将其嵌入到一个WPF应用程序中,则可以在WPF应用程序中使用它。这个类是完整的:它的Document属性是一个HtmlDocument对象,带有一个Body属性,它是一个包含页面内容的。您可以递归地遍历DOM树以找到所需的元素并读取其内部文本,或者只需使用正则表达式或函数处理整个页面的文本

为了获取WPF WebBrowser的内容,我在某处和某处找到了这个解决方案
myBrowser.LoadCompleted += new LoadCompletedEventHandler(myBrowser_LoadCompleted);

这似乎是可行的,但只有当目标框架至少为.Net 4.0,并且您包含Microsoft.CSharp.dll时才可行。如果您的目标框架为,则无法选择Microsoft.CSharp.dll。为了获取WPF WebBrowser的内容,我在某处找到了此解决方案,这似乎是可行的,但只有当目标框架至少为.Net 4.0,并且您包含Microsoft.CSharp.dll时,如果您的目标框架已启用,则无法选择Microsoft.CSharp.dll-如果您不说得太含糊、不是真正的问题,甚至只是RTFM,您就不会鼓励人们改进他们的问题。给这个人一些线索。酸,考虑发布一些代码显示你尝试了什么。此外,请查看您提供的页面的源代码:1.7655,因为您可以看到span的id为last_last,您应该能够利用它。同时,这里还有一些其他可能有用的问题:,Acid最初添加了wpf和webbrowser标记,这对于回答问题非常重要。请不要删除它们。这个问题很有趣,因为Acid使用WPF WebBrowser,这是不完整的:您无法轻松解析HtmlElements树,因为Document属性只是一个对象。所以我在问题中添加了WPF WebBrowser这个词,这些词以前只是标签。来吧,选民们——如果你不说得太含糊,不是一个真正的问题,甚至只是RTFM,你就不会鼓励人们改进他们的问题。给这个人一些线索。酸,考虑发布一些代码显示你尝试了什么。此外,请查看您提供的页面的源代码:1.7655,因为您可以看到span的id为last_last,您应该能够利用它。同时,这里还有一些其他可能有用的问题:,Acid最初添加了wpf和webbrowser标记,这对于回答问题非常重要。请不要删除它们。这个问题很有趣,因为Acid使用WPF WebBrowser,这是不完整的:您无法轻松解析HtmlElements树,因为Document属性只是一个对象。因此,我在问题中添加了术语WPF WebBrowser,这些词以前只是标记。既然.NET在4.5中,您是否仍然建议用户使用Winforms版本的WebBrowser,或者这些问题是否已得到解决?既然.NET在4.5中,您是否仍然建议用户使用Winforms版本的WebBrowser,或者这些问题已经解决了吗?但是,如果你不止一次收到关于你的第二个参数的某个文本,你可能会被卡住-至少如果你的目标是获得一个uniqe css路径或id。我的意思是你可以使用一个组合框让用户选择,至少他有足够的经验。但是,如果你不止一次收到关于你的第二个论点的某个文本,你可能会被卡住——至少如果你的目标是获得一个uniqe css路径或id。我的意思是你可以使用一个组合框让用户选择,至少他有足够的经验。