如何从 WebBrowser 组件获取 HTMLElement 的所有属性
我正在使用以下方式遍历 DOM:
webBrowser.Document.Body.Parent.Children
我想获取特定 HTMLElement
的所有属性。但是,HTMLElement
只有一个 getAttribute
方法。我正在寻找更像 htmlelement.attributes[n]
的东西。因为我事先不知道属性。
I am traversing the DOM using:
webBrowser.Document.Body.Parent.Children
I want to get all attributes of a specific HTMLElement
. However, the HTMLElement
just have a getAttribute
method. I am looking for something more like htmlelement.attributes[n]
. Because I dont know the attributes beforehand.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果 wbMain 是您的 WebBrowser1 控件,请执行以下操作。
首先,您需要获取对元素的引用,假设您想要访问页面的第一个
链接,如果需要,您可以循环遍历所有链接。
这是在 VB 中,但在 C# 中是同样的事情,只是语法不同。
这将循环遍历所有属性并将其以
name=value
格式显示在 MSGBOX 中。如果您想按名称(属性名称)检索它,只需使用
aElement.getAttribute("target")
调用即可从 a Link 中检索目标属性值。如果您想确认您获得了正确的对象/元素,只需执行
aElement.outerHTML
即可仅获取该元素的完整 HTML 代码。由于我使用的是 .NET 之前的版本,如果给您带来麻烦,请随意将声明从 HTMLAnchorElement 更改为 IHTMLAnchorElement,当然,如果您想遍历页面上的所有元素,则可以使用 IHTMLElement,然后您就可以了对于页面上的第一个元素,需要做的是 wbMain.Document.All(0) ,或者循环直到 .All.length - 1 遍历所有元素。请记住,如果您使用嵌套的 For 循环,请不要使用 i 两次,而使用 j 作为其中之一:)。
如果这能回答您的问题,或者我是否可以采取更多措施来帮助您解决问题,请告诉我。
If wbMain is your WebBrowser1 control, do the following.
First, you need to get a ref to your element, lets say you want to access the first
<A>
link, of your page, you can loop through all if you want.This is in VB, but its the same sort of thing in C#, just different syntax.
This will loop through all attributes and display it in a MSGBOX in a
name=value
format.If you want to retreive it by name (attributes name) just call using
aElement.getAttribute("target")
to retreive the target attributes value from the a Link.If you want to confirm you got the right object/element, just do a
aElement.outerHTML
to get the full HTML code for that element only.Since I am using a pre.NET version, feel free to change the declaration from HTMLAnchorElement to IHTMLAnchorElement if it gives you trouble, of course, you can just use IHTMLElement if you want to go through all elements on a page, then all you'll need to do is wbMain.Document.All(0) for first element on a page, or loop until .All.length - 1 to go through all. Remember if you are using nested For loops, don't use i twice, use j for one of them :).
Let me know if this answers your question or if there is more I can do to help you with your issue.
您可以使用 HtmlAgilityPack 来解析 html 文档,您可以使用
you can use HtmlAgilityPack to parse html doc in u r case u can use
到目前为止只知道三种非循环方法。不幸的是,似乎没有人能够在任何给定标签上获得所有可能的属性。或者,请参阅 https://developer.mozilla 处的 attr-tag 表。 org/en-US/docs/Web/HTML/Attributes
输出到:
var
,然后页面(打印)或控制台
(日志)。所有这些都是纯 js,并且可以在 es6 chrome 和 firefox 中工作。对其他人来说是未知的。
only know three non-
loop
methods so far. unfortunately, none seem to get ALL attr POSSIBLE on any given tag. alternatively, see attr-tag table at https://developer.mozilla.org/en-US/docs/Web/HTML/Attributesoutput to: a
var
and then page (print) or toconsole
(log).All are plain js and work in es6 chrome and firefox. Unknown for others.