Я создаю программу, которая будет извлекать данные из HTML-кода этого сайта. Этот веб-сайт обновляет свой список каждый месяц и иногда содержит различные элементы. На данный момент я могу выбрать 3 различных значения: Шлем, Липкая граната и C4
.
Однако, когда я пытаюсь получить значение бронированного жилета, я получаю еще один шлем.
Вот мой исходный код
Imports System.IO
Imports System.Net
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim pos1 As Long, pos2 As Long, newitem As String, findstring As String
Dim request As WebRequest = WebRequest.Create("http://cosmic-octane-202719.appspot.com/")
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim datastream As Stream = response.GetResponseStream
Dim reader As New StreamReader(datastream)
Dim strData As String = reader.ReadToEnd
'Keep getting 7 Helmets
For currentitem As Integer = 1 To 7
findstring = "<li><strong"
pos1 = InStr(strData, findstring)
pos1 = InStr(pos1 + 1, strData, ">", vbTextCompare)
pos2 = InStr(pos1 + 1, strData, "</strong></li>", vbTextCompare)
newitem = strData.Substring(pos1 + findstring.Length - 3, pos2 - pos1 - findstring.Length + 2)
ListBox1.Items.Add(newitem)
Next
'Sticky Grenade
findstring = "<li>Lethal: <strong"
pos1 = InStr(strData, findstring)
pos1 = InStr(pos1 + 1, strData, ">", vbTextCompare)
pos2 = InStr(pos1 + 1, strData, "</strong></li>", vbTextCompare)
newitem = strData.Substring(pos1 + findstring.Length - 3, pos2 - pos1 - findstring.Length + 2)
ListBox1.Items.Add(newitem)
'C4
findstring = "<li>Placeable: <strong"
pos1 = InStr(strData, findstring)
pos1 = InStr(pos1 + 1, strData, ">", vbTextCompare)
pos2 = InStr(pos1 + 1, strData, "</strong></li>", vbTextCompare)
newitem = strData.Substring(pos1 + findstring.Length - 3, pos2 - pos1 - findstring.Length + 2)
ListBox1.Items.Add(newitem)
End Sub
End Class
Фрагмент HTML-кода
<ul class="disc">
<li><strong>Helmet</strong></li>
<li><strong>Armored Vest</strong></li>
<li><strong>Mk. 42</strong> <span class="red">(Reflex + Grip)</span></li>
<li><strong>Uzi</strong> <span class="red">(Rapid Fire + Extended Clip)</span></li>
<li><strong>Combat Knife</strong> <span class="red">(Grip)</span></li>
<li><strong>Fast Reload</strong> <span class="red">(Advanced)</span></li>
<li><strong>FMJ</strong> <span class="red">(Basic)</span></li>
<li>Lethal: <strong>Sticky Grenade</strong></li>
<li>Placeable: <strong>C4</strong></li>
</ul>
Результат:
7 Шлемов
Я думаю, что моя проблема в том, что программа просто находит строку Шлема и не переходит к следующей строке.
Как сделать цикл, который будет искать <li><strong>
в каждой строке и добавлять текст, который идет после <li><strong>
и до </strong>
в список.
Например
<li><strong>Helmet</strong></li> would put Helmet into listbox1.
<li><strong>Armored Vest</strong></li> would put Armored Vest into listbox1.
<li><strong>Mk. 42</strong> <span class="red">(Reflex + Grip)</span></li> would put Mk. 42 into listbox1
Кроме этого, я застрял.