如何获取任何文本到WebBrowser文档而不获取任何属性? vb.net

时间:2016-04-24 00:00:11

标签: html vb.net

如何在没有vb.net中的任何属性的情况下将任何文本导入WebBrowser文档?!

例1:

NSFetchedResultsController

例2:

<h1>text here</h1>

我怎么能在这里得到“文字”?!

感谢。 :)

1 个答案:

答案 0 :(得分:0)

您可以 1)使用WebBrowser的内置方法迭代所有<h1>代码或获取第一个或 2)< / strong>使用正则表达式。

使用内置方法

尽管所有标签都很简单,但您只需使用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上搜索<h1>标记。

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

正则表达式解释:

(?<=<h1[^<>\/]*>)((?!<\/h1>).)*(?=<\/h1>)

(?<= ...):匹配的文字必须以...之前的任何内容开头。

<h1[^<>\/]*>:将<h1>开头标记与任何属性匹配。

[^<>\/]*:匹配非<>/的所有字符。

((?!<\/h1>).)*:匹配前面有</h1>标记的所有字符。

(?=<\/h1>):比赛必须 后跟一个</h1>标记。