VB 2010: Как я могу получить содержимое определенного промежутка в определенном классе веб-страницы?

0

Позвольте мне объяснить: я хочу создать форму конвертера валют, которая использует онлайн-ставки, чтобы она обновлялась. Я планирую использовать 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, потому что:

  1. Это всегда будет
  2. Это хороший шанс для меня узнать, как захватить определенную часть веб-страницы.
  • 0
    Пожалуйста, помогите мне здесь! Спасибо!
Теги:
web-scraping
winforms
html-parsing

1 ответ

0

Я использую 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 очень медленный!

  • 0
    Большое спасибо!! Попробую завтра утром! Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню