2014-07-20 88 views
0

我正在試圖創建一個簡單的程序,將從網站拉文本項目並將其添加到文本框。我只是在試驗,並認爲我可以做到這一點,但對我來說並不那麼容易。我知道如何獲取網站的整個源代碼(如下)。它有一個我知道的ID,但它沒有標籤名稱。所以我不知道如何讓它通過文本閱讀,只保留身份證旁邊的部分。或者,使用Webbrowser工具然後嘗試獲取文本項目會更好。我只是想盡一切辦法加快速度。我認爲我的第一個選擇更好,因爲這對計算機的內存來說會更好。使用下面的代碼,我不知道接下來要添加什麼?試圖從網站刮物品

Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("Website") 
Dim response As System.Net.HttpWebResponse = request.GetResponse() 
Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream()) 
Dim source As String = sr.ReadToEnd() 

可以說例如id是「name」。查看頁面的來源,這是該部分的外觀(如下)。我如何解析通過字符串的源代碼並找到本節,獲取名稱Brandon,並將其添加到文本框中。

<span id="name">Brandon</span> 
+0

您可以使用HTML Agility Pack來解析HTML。 – Matthew

回答

0

有幾種方法可以解決這個問題。我不會寫任何源代碼,因爲我很久沒有使用過Visual Basic了。但是,如果你是谷歌的如何做以下任何事情,你應該找到許多教程和文件。

正則表達式

上的全部源代碼使用正則表達式可以幫助你通過搜索它應該是唯一的ID屬性找到的元素。正則表達式有時會非常緩慢,這就是爲什麼如果您必須對大量文本進行大量搜索,應該避免這種情況。

/<([a-z0-9]+)\sid="name"(.*?)>(.*?)<\// - >未測試,但可能會幫助你

字符串的位置

使用一個函數,會發現在字符串中的子串的位置將是有益的。在C中是strstr,在PHP中是strpos。這些類型的函數將爲您提供一個字符串的起始位置,其中您的案例將搜索id="name"。一旦你找到了,你會找到標籤末尾的位置,然後找到該元素的結束標籤。然後,您將執行一個子字符串函數,該字符串函數將從您指定的長度開始在X位置開始的文本,它將是closing tag position - end of opening tag position

HTML/XML庫

大概有一噸,將文檔解析成某種物體或數組的HTML/XML庫。然後你可以遍歷這些元素,直到找到你正在尋找的元素。其中一些庫甚至可能具有元素ID的搜索功能,類似於JavaScript將爲特定元素排序。

這些庫可能很難入門,但如果您需要繼續查找更多HTML元素,它們將在未來爲您提供大量選項。