Webサイトから値を取得する必要があります(変更される可能性があり、サイトを制御できません)。私は現在、機能するコードをいくつか持っています...しかし、実行するのに非常に長い時間がかかります。これを行うには大幅に改善された方法があることを私は知っています、私はそれが何であるかを知りません。
私はRegexやHTMLAgilityPackのようないくつかの代替案を検討しましたが(複雑で、おそらくやり過ぎだと思われますか?)、それぞれを試さずに、何が最も効率的かわかりません。そして、私はさらに多くの可能性があると確信しています。
問題は、ページの処理方法ではなく、ページの取得方法にある可能性もあります。
Dim GETURL As WebRequest
GETURL = WebRequest.Create("http://www.example.com")
Dim objStream As Stream = GETURL.GetResponse.GetResponseStream()
Dim objReader As New StreamReader(objStream)
Dim sLine As String = ""
Dim a As Integer = 0
Dim result As String = ""
Do While Not sLine Is Nothing
a += 1
sLine = objReader.ReadLine
If Not sLine Is Nothing Then
result += sLine
End If
Loop
Dim startTag as string ="<some html tag>"
Dim endTag as string ="<closing tag>"
Dim firstIndex As Integer = result.IndexOf(startTag) + startTag.Length
result = result.Substring(firstIndex, result.Length - firstIndex)
Dim RequiredVal As String = result.Substring(0, result.IndexOf(endTag))
注意してください、私はこのコードがどれほどひどく非効率的であるかを理解していますが、さまざまな順列を試してみるのではなく(おそらくまだかなり非効率的なコードがあります)、最初に専門家にアドバイスを求めると思いました:-)
アップデート:
返事がなかったので(質問が少し曖昧すぎたのではないでしょうか?)、自分で効率を上げようとしています。WebCient.DownloadString()を使用することで、実行にかかる時間を最大50%短縮することができました。これは良いことですが、ページからのデータの抽出を改善できると思います。以下の更新されたコードを参照してください。
Dim client As New WebClient()
Dim result As String = client.DownloadString("http://www.example.com")
Dim startTag as string ="<some html tag>"
Dim endTag as string ="<closing tag>"
Dim firstIndex As Integer = result.IndexOf(startTag) + startTag.Length
result = result.Substring(firstIndex, result.Length - firstIndex)
Dim RequiredVal As String = result.Substring(0, result.IndexOf(endTag))
どんな提案も大いに評価されるでしょう。