Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
1
.NET 4.x

Записываем полученные данные с Html страницы

22.01.2016, 22:29. Показов 1670. Ответов 15

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста как выводить вот эти 3 параметра: (продолжение темы)

1.123
2. 22.01.2016 10:47:27
Что бы искать сразу эти 3 параметра в странице их их можно быть много но с разными параметрами 1 и 2, а вот S 13.0 всегда не измененный допустим или он есть но на всей странице встречается 10-20 раз. а параметров там 100-200
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<html>
    <head>
        <title>monitor v.4.1.2</title>
    <style>BODY {BACKGROUND-COLOR: white;FONT-FAMILY: "Verdana", sans-serif;FONT-SIZE: 100%;MARGIN-LEFT: 0px;MARGIN-TOP: 0px}H1{BACKGROUND-COLOR: #003366;BORDER-BOTTOM: #336699 6px solid;COLOR: #ffffff;FONT-SIZE: 130%;FONT-WEIGHT: normal;MARGIN: 0em 0em 0em -20px;PADDING-BOTTOM: 8px;PADDING-LEFT: 30px;PADDING-TOP: 16px}H2{COLOR: #000000;FONT-SIZE: 80%;FONT-WEIGHT: bold;MARGIN-BOTTOM: 3px;MARGIN-LEFT: 10px;MARGIN-TOP: 20px;PADDING-LEFT: 0px}.infotable{BACKGROUND-COLOR: #f0f0e0;BORDER-BOTTOM: #ffffff 0px solid;BORDER-COLLAPSE: collapse;BORDER-LEFT: #ffffff 0px solid;BORDER-RIGHT: #ffffff 0px solid;BORDER-TOP: #ffffff 0px solid;FONT-SIZE: 70%;MARGIN-LEFT: 10px}.header{BACKGROUND-COLOR: #cecf9c;BORDER-BOTTOM: #ffffff 1px solid;BORDER-LEFT: #ffffff 1px solid;BORDER-RIGHT: #ffffff 1px solid;BORDER-TOP: #ffffff 1px solid;COLOR: #000000;FONT-WEIGHT: bold}</style>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251"/>
    </head>
    <body>
        <table cellpadding="2" cellspacing="0" width="98%" border="1" bordercolor="white" class="infotable">
            <tr>
        <th nowrap class="header">Рабочая станция</th>
        <th nowrap class="header">Приложение</th>
        <th nowrap class="header">Время последнего обращения</th>
 
<tr>
    <td>123</td>
    <td>I 5.0</td>
    <td>22.01.2016 10:47:27</td>
</tr>
<tr>
    <td>1234</td>
    <td>S 13.0</td>
    <td>22.01.2016 10:49:16</td>
</tr>
<tr>
    <td>345</td>
    <td>I 5.0</td>
    <td>22.01.2016 10:47:27</td>
</tr>
<tr>
    <td>654</td>
    <td>S 13.0</td>
    <td>22.01.2016 10:49:16</td>
</tr>
<tr>
    <td>34567</td>
    <td>I 5.0</td>
    <td>22.01.2016 10:47:27</td>
</tr>
<tr>
    <td>23456</td>
    <td>S 13.0</td>
    <td>22.01.2016 10:49:16</td>
</tr>
<tr>
    <td>12345</td>
    <td>I 5.0</td>
    <td>22.01.2016 10:47:27</td>
</tr>
<tr>
    <td>76543</td>
    <td>S 13.0</td>
    <td>22.01.2016 10:49:16</td>
</tr>
</table>
</body>
</html>
Т.е. Я хочу получить 1 и 3 пункт т.е. имя и время в событии S 13.0 и записывать из в базу, что бы можно было посмотреть потом когда имя и время было на странице c событием S 13.0
 
S 13.0
76543 22.01.2016 10:49:16
23456 22.01.2016 10:49:16
1234 22.01.2016 10:49:16
654 22.01.2016 10:49:16
Вот в таком виде.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2016, 22:29
Ответы с готовыми решениями:

Распарсить Html-файл, полученные данные поместить в таблицу
Здравствуйте друзья. Как можно парсить html файл (локально находящийся на диске) именно мне надо...

Считываем данные с сайта и записываем в переменные
Добрый день друзья. помогите разбить данные с сайта по разным переменным: Код: &lt;tr...

Считываем файл с хоста и записываем данные в edit1
Всем доброго вечера. Возник такой вопрос, мне нужно чтобы программа соединялась с...

Вытащить данные с html страницы в БД
Необходимо взять данные с HTML страницы и вставить их в свою БД

15
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
23.01.2016, 00:03 2
Если сходу, то как-то так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Imports System
Imports System.IO
Imports System.Linq
Imports System.Collections.Generic
Imports System.Text.RegularExpressions
 
Module BuildTable
  Sub Main()
    Dim d As New Dictionary(Of Int32, String)
    Dim s As String = File.ReadAllText("E:\sandbox\mydoc.html")
    Dim a = (From m In New Regex("<td>(.*)</td>").Matches(s) _
             Select m.Groups(1).Value).ToArray()
    
    For i As Int32 = 0 To a.Length - 1
      If (i + 1) < a.Length AndAlso a(i + 1).StartsWith("S") Then
        d.Add(CType(a(i), Int32), a(i + 2))
      End If
    Next
    
    Dim sorted = From pair In d Order By pair.Key Descending
    For Each p As KeyValuePair(Of Int32, String) In sorted
      Console.WriteLine("{0} {1}", p.Key, p.Value)
    Next
  End Sub
End Module
1
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
23.01.2016, 11:20  [ТС] 3
Цитата Сообщение от greg zakharov Посмотреть сообщение
Если сходу, то как-то так:
Что то вообще пусто.
cmd запускается но быстро пропадает и не чего не выводит
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Imports System
Imports System.IO
Imports System.Linq
Imports System.Collections.Generic
Imports System.Text.RegularExpressions
Imports System.Net
 
Module BuildTable
    Sub Main()
        Dim d As New Dictionary(Of Int32, String)
        'Dim s As String = File.ReadAllText("E:\sandbox\mydoc.html")
        Dim s As String = (New WebClient()).DownloadString("http://ser.host.ru:8990")
        Dim a = (From m In New Regex("<td>(.*)</td>").Matches(s) _
                 Select m.Groups(1).Value).ToArray()
 
        For i As Int32 = 0 To a.Length - 1
            If (i + 1) < a.Length AndAlso a(i + 1).StartsWith("S") Then
                d.Add(CType(a(i), Int32), a(i + 2))
            End If
        Next
 
        Dim sorted = From pair In d Order By pair.Key Descending
        For Each p As KeyValuePair(Of Int32, String) In sorted
            Console.WriteLine("{0} {1}", p.Key, p.Value)
            'MsgBox("123456")
        Next
    End Sub
End Module
Даже пробовал локально, не чего не получилось :-(
0
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
23.01.2016, 11:32 4
vova_king, Запускай без отладки или добавь
VB.NET
1
Console.ReadKey()
1
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
23.01.2016, 11:56  [ТС] 5
Цитата Сообщение от edward_freedom Посмотреть сообщение
vova_king, Запускай без отладки или добавь
vb.netВыделить код
Console.ReadKey()
Что то вообще не получается :-(
0
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
23.01.2016, 12:18  [ТС] 6
Вот запуск без отладки
Миниатюры
Записываем полученные данные с Html страницы  
0
Модератор
Эксперт .NET
4205 / 3288 / 498
Регистрация: 27.01.2014
Сообщений: 6,041
23.01.2016, 13:20 7
vova_king, а если таким образом получить нужные вам параметры? Как вариант, сугубо для вашего случая:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    Public Function getParams(Str As String) As String
        Dim strList() As String = Str.Split(vbCrLf)
        Dim i5, s13 As String
        For i = 0 To strList.Length - 1
            If strList(i).Contains("I 5.0") Then
                i5 &= strList(i).Trim.Replace("<td>", "").Replace("</td>", "") & " = " &
                    strList(i - 1).Trim.Replace("<td>", "").Replace("</td>", "") & " (" &
                    strList(i + 1).Trim.Replace("<td>", "").Replace("</td>", "") & ")" & vbCrLf
 
            ElseIf strList(i).Contains("S 13.0") Then
                s13 &= strList(i).Trim.Replace("<td>", "").Replace("</td>", "") & " = " &
                    strList(i - 1).Trim.Replace("<td>", "").Replace("</td>", "") & " (" &
                    strList(i + 1).Trim.Replace("<td>", "").Replace("</td>", "") & ")" & vbCrLf
            End If
        Next
        Return i5 & s13
    End Function
Изображения
 
2
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
23.01.2016, 13:56  [ТС] 8
Цитата Сообщение от Yury Komar Посмотреть сообщение
а если таким образом получить нужные вам параметры?
Ну как сказать!!! На скрине все норм, так как и надо (практически). Я не вижу в коде обращение к адресу http://serv.host.ru:8990
или так же использовать
VB.NET
1
Dim s As String = (New WebClient()).DownloadString("http://ser.host.ru:8990")
?
0
Модератор
Эксперт .NET
4205 / 3288 / 498
Регистрация: 27.01.2014
Сообщений: 6,041
23.01.2016, 14:44 9
Цитата Сообщение от vova_king Посмотреть сообщение
или так же использовать
да вы правы, таким образом вы получаете код страницы и передаете его в мою функцию и получаете результат.

Добавлено через 43 секунды
тоесть
VB.NET
1
2
Dim s As String = (New WebClient()).DownloadString("http://ser.host.ru:8990")
MsgBox(getParams(s))
Добавлено через 16 минут
или напрямую:
VB.NET
1
MsgBox(getParams((New WebClient()).DownloadString("http://ser.host.ru:8990")))
1
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
23.01.2016, 14:52  [ТС] 10
Что то в ошибку ушло!
Миниатюры
Записываем полученные данные с Html страницы  
0
Модератор
Эксперт .NET
4205 / 3288 / 498
Регистрация: 27.01.2014
Сообщений: 6,041
23.01.2016, 14:54 11
vova_king, можно увидеть саму страницу, точнее ее код HTML, который передается в функцию?
0
Модератор
Эксперт .NET
4205 / 3288 / 498
Регистрация: 27.01.2014
Сообщений: 6,041
23.01.2016, 16:13 12
Лучший ответ Сообщение было отмечено vova_king как решение

Решение

vova_king, вот переделанная функция под реальную страницу из ЛС...
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Public Function getParams(HTML As String, SearchName As String, TableName As String) As String
        Dim strList() As String = HTML.Replace("><", ">" & vbCrLf & "<").Split(vbCrLf)
        Dim i5 As String
        Dim Flag As Boolean = False
        For i = 0 To strList.Length - 1
            If Flag Or strList(i).Contains(TableName) Then
                Flag = True
                If strList(i).Replace(Space(1), "").Contains(SearchName.Replace(Space(1), "")) Then
                    i5 &= strList(i).Trim.Replace("<td>", "").Replace("</td>", "") & " = " &
                        strList(i - 1).Trim.Replace("<td>", "").Replace("</td>", "") & " (" &
                        strList(i + 1).Trim.Replace("<td>", "").Replace("</td>", "") & ")" & vbCrLf
                End If
            End If
        Next
        Return i5
    End Function
использование

VB.NET
1
MsgBox(getParams(HTML, "S 13.0", "Список распределенных лицензий"))
добавил параметр для поиска по имени, а так же, для исключения ложных срабатываний, так как на странице несколько таблиц, включил также парсинг по таблицам, конечно функция не совершенна и будет актуальна если искомая таблица находится последней на странице, но тем не менее, работает.
Миниатюры
Записываем полученные данные с Html страницы  
3
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
23.01.2016, 16:28  [ТС] 13
Ошибка
Миниатюры
Записываем полученные данные с Html страницы  
0
Модератор
Эксперт .NET
4205 / 3288 / 498
Регистрация: 27.01.2014
Сообщений: 6,041
23.01.2016, 16:33 14
Да чтож вы бездумно то функцию используете?
Вместо HTML вставьте полученый код страницы... это ж элементарно...
VB.NET
1
(New WebClient()).DownloadString("http://ser.host.ru:8990")
3
34 / 34 / 12
Регистрация: 29.07.2010
Сообщений: 416
23.01.2016, 16:42  [ТС] 15
Простите.
Все работает. Всем спасибо.
буду дальше думать писать с аксес полученные результаты
0
Модератор
Эксперт .NET
4205 / 3288 / 498
Регистрация: 27.01.2014
Сообщений: 6,041
23.01.2016, 16:43 16
vova_king, удачи
1
23.01.2016, 16:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2016, 16:43
Помогаю со студенческими работами здесь

Получить данные со страницы HTML
Открыл такую тему в ветке по Делфям, но потом понял, что наверное, не совсем там спросил....

Спарсить данные с HTML страницы
Имеется HTML страница, со следующими содержаниеми: &lt;table class=&quot;table table-hover&quot;&gt; ...

Выгрузить табличные данные со страницы html
Здравствуйте! Очень надо получить данные со страницы, так как разработчик не будет скорее всего...

Как получить данные с html страницы
Здравствуйте. Подскажите пожалуйста. Появилась необходимость написать программу, которая при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru