【问题标题】:how to get any text into WebBrowser Document without get any Attribute ? vb.net如何在不获取任何属性的情况下将任何文本放入 WebBrowser 文档? VB.net
【发布时间】:2016-04-24 00:00:11
【问题描述】:

如何在不获取 vb.net 中的任何属性的情况下将任何文本获取到 WebBrowser 文档中?!

例子1:

<h1>text here</h1>

例子2:

<h1 name="anything">text here</h1>

我怎样才能得到“这里的文字”?!

谢谢。 :)

【问题讨论】:

  • 我不禁注意到您一直在线。我的回答有用吗? :)

标签: html vb.net


【解决方案1】:

您可以 1) 使用 WebBrowser 的内置方法遍历所有 &lt;h1&gt; 标记或获取第一个标记,或者 2) 使用正则表达式.

使用内置方法

虽然所有标签的迭代很简单,但您只需要使用HtmlDocument.GetElementsByTagName() 方法。

获取第一个找到的标签(按时间顺序):

Dim h1Text As String = WebBrowser1.Document.GetElementsByTagName("h1")(0).InnerText

遍历所有标签:

Dim h1Strings As New List(Of String)

For Each h1Tag As HtmlElement In WebBrowser1.Document.GetElementsByTagName("h1")
    h1Strings.Add(h1Tag.InnerText)
Next

使用正则表达式

如果您知道自己在做什么,那么使用正则表达式并不难。首先将Imports 语句放在代码文件的最顶部:

Imports System.Text.RegularExpressions

现在您只需在 WebBrowser 的 DocumentText 中搜索 &lt;h1&gt; 标记。

Dim h1Text As String = Regex.Match(WebBrowser1.DocumentText, "(?<=<h1[^<>\/]*>)((?!<\/h1>).)*(?=<\/h1>)", RegexOptions.IgnoreCase).Value

正则表达式模式解释:

(?&lt;=&lt;h1[^&lt;&gt;\/]*&gt;)((?!&lt;\/h1&gt;).)*(?=&lt;\/h1&gt;)

(?&lt;= ...):匹配的文本必须以... 开头。

&lt;h1[^&lt;&gt;\/]*&gt;:将&lt;h1&gt; 开始标记与任何属性匹配。

[^&lt;&gt;\/]*:匹配所有不是&lt;&gt;/的字符。

((?!&lt;\/h1&gt;).)*:匹配所有不是前面有&lt;/h1&gt;标签的字符。

(?=&lt;\/h1&gt;): 匹配必须 后跟一个&lt;/h1&gt; 标签。

【讨论】:

  • 如果这对您有用,请记住按帖子左侧的绿色复选标记将其标记为已接受的答案。
猜你喜欢
  • 2017-06-30
  • 1970-01-01
  • 2021-08-30
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多