如何在没有vb.net中的任何属性的情况下将任何文本导入WebBrowser文档?!
例1:
NSFetchedResultsController
例2:
<h1>text here</h1>
我怎么能在这里得到“文字”?!
感谢。 :)
答案 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>
标记。