如何獲取任何文本到WebBrowser文檔中,而無需在vb.net中獲取任何屬性?如何獲得任何文本到WebBrowser文檔沒有得到任何屬性? vb.net
例1:
<h1>text here</h1>
例2:
<h1 name="anything">text here</h1>
我怎樣才能獲得 「文本在這裏?!」
謝謝。 :)
如何獲取任何文本到WebBrowser文檔中,而無需在vb.net中獲取任何屬性?如何獲得任何文本到WebBrowser文檔沒有得到任何屬性? vb.net
例1:
<h1>text here</h1>
例2:
<h1 name="anything">text here</h1>
我怎樣才能獲得 「文本在這裏?!」
謝謝。 :)
你既可以1)使用Web瀏覽器的內置的方法來通過全體<h1>
標籤迭代或獲取最前面的一個,或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
現在你只需要搜索的Web瀏覽器的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>
標記。
如果這適用於您,請記住通過按下帖子左側的綠色複選標記標記爲已接受的答案。 –
我不禁注意到你已經上網了。我的答案是否有用? :) –