Taky bych to někdy využil, ale než nám někdo zkušený poradí, možná Vám pomůže to, co jsem nedávno spáchal já. Potřeboval jsem pravidelně testovat parametry svého modemu (psou přístupné přes http:// stránku, takže si myslím, že by to mělo jít použít i na Váš problém. Defacto jsem využil skutečnosti, že takovéto stránky jsou programově generované, což znamená hlavně to, že mají (alespoň v těch určitých partiích) přesnou neměnnou strukturu. Takže udělám to, že: 1. Načtu předmětnou stránku 2. Převedu ji do řetězce 3. V řetězci vyhledám pozici určitého fragmentu textu, který mi na dané stránce přesně identifikuje místo, které mne zajímá a hlavně je stále neměnné. 4. od tohoto indexu pak přečtu obsah dat a dle konkrétní situace z něj vyseparuju případně přetypuju potřebná data. Samozřejmě u mne to bylo celkem jednoduché - hledal jsem pouze asi 3 hodnoty, ale určitě by se to dalo rozšířit a zobecnit na libovolný případ, kdy daná stránka v oblasti dat, která mne zajímají, dodržuje stále stejnou strukturu. Pokud chcete pro inspiraci, přidávám ten kousek kódu, který v mé aplikaci řešil právě tuto část (nebude-li Vám z něj něco jasné, klidně se zeptejte)(dávám to tak, jak to mám v aplikaci):
Public Function ParametryModemu() As String
Dim stranka As String = ""
Dim parametryStr As String = ""
Dim indexStart, indexStop As Integer
stranka = nactiStranku(My.Settings.adrModem & "/RgSignal.asp")
If stranka = "" Then Return "MODEM NEODPOVÍDÁ! "
If stranka.Substring(0, 5) <> "<html" Then Return stranka
indexStart = stranka.IndexOf("<tr><td>Signal To Noise Ratio</td><td>") + 38
indexStop = stranka.IndexOf("</td>", indexStart)
parametryStr = "SNR: " & stranka.Substring(indexStart, indexStop - indexStart)
indexStart = stranka.IndexOf("<tr><td>Power Level</td><td>", indexStop) + 28
indexStop = stranka.IndexOf("<br>", indexStart)
parametryStr &= " - DownPWR: " & stranka.Substring(indexStart, indexStop - indexStart)
indexStart = stranka.IndexOf("<tr><td>Power</td><td>", indexStop) + 22
indexStop = stranka.IndexOf("</td>", indexStart)
parametryStr &= " - UpPWR: " & stranka.Substring(indexStart, indexStop - indexStart) & vbTab & vbTab
Return parametryStr
End Function
Public Function nactiStranku(ByVal url As String) As String
' úprava adresy
If url.Substring(0, 7) <> "http://" Then
url = url.Insert(0, "http://")
End If
'vytvoření požadavku na stránku
Dim req As Net.HttpWebRequest = CType(Net.WebRequest.Create(url), Net.HttpWebRequest)
' stažení stránky
Dim resp As Net.HttpWebResponse
Try
resp = req.GetResponse()
Catch ex As Net.WebException
Return ex.Message
End Try
'převod stránky ze streamu do řetězce
Dim reader As New IO.StreamReader(resp.GetResponseStream())
nactiStranku = reader.ReadToEnd()
reader.Close()
End Function
|