Позвольте мне объяснить: я хочу создать форму конвертера валют, которая использует онлайн-ставки, чтобы она обновлялась. Я планирую использовать Google, у которого есть встроенная функция конвертации валюты: введите:
[Любой символ валюты] [Любая числовая сумма] + в + [Любой символ валюты]
Я знаю, как отформатировать URL-адреса, которые я буду искать, и какой класс имеет диапазон (текст которого я хочу), я просто просто не знаю, как программно вывести результат и использовать его в моей форме.
Здесь применимый код HTML из преобразования "£ 1 в $":
<div class="vk_ans vk_bk curtgt" style="padding-bottom: 4px">
<span style="word-break:break-all">1.68</span>
<span>US Dollar</span></div>
Класс называется:
vk_ans vk_bk curtgt
Текст диапазона является первым в классе (тот, который содержит "1,68")
Кстати, я полностью понимаю, что для этой цели есть простые в использовании веб-сайты API, но я хочу использовать Google, потому что:
Я использую http://www.nuget.org/packages/ScrapySharp/2.2.63 для html-scraping, он позволяет использовать селектор CSS3, чтобы хорошо захватить то, что вам нужно.
В вашем случае это будет так просто:
Dim doc as HtmlAgilityPack.HtmlDocument = new HtmlAgilityPack.HtmlDocument()
doc.LoadHtml(GetRawHtml(theUrl))
Dim body as HtmlNode= doc.DocumentNode.SelectSingleNode("//body")
Dim yourSpan as HtmlNode = body.CssSelect(".vk_ans.vk_bk.curtgt").First()
dim yourValue as Double = Double.Parse(yourSpan.InnerText)
Function GetRawHtml(url As String) As String
Dim html As String = String.Empty
Dim request As WebRequest = WebRequest.Create(url)
Try
Using response As WebResponse = request.GetResponse()
Using data As Stream = response.GetResponseStream()
Using sr As New StreamReader(data)
html = sr.ReadToEnd()
End Using
End Using
End Using
Catch e As Exception
yourLogger.Error("WebRequest failed at url '{0}'. Error: {1}", url, e.ToString())
End Try
Return html
End Function
Кроме того, если запрос медленный, вы можете изменить атрибут прокси-сервера на ничего, см. Здесь: HttpWebRequest очень медленный!