Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/79: Рейтинг темы: голосов - 79, средняя оценка - 4.87
33 / 3 / 0
Регистрация: 19.10.2013
Сообщений: 53
.NET 4.x

Парсинг текста с сайта

05.01.2014, 21:30. Показов 15384. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
Всех с праздниками!
Ребят, помогите разобраться с парсингом.
Суть вот в чем. Делаю запрос на сайт, получаю ответ и сохраняю его в TextBox.
Далее хотелось бы сперва спарсить что-то простое, к примеру информацию между тегами <title>.
Как это сделать?

Знаю, что многие сейчас налетят и скажут, мол пользуйся регулярками, поэтому сразу скажу, мне далеко еще до регулярок и я до них еще не дорос

И еще такой вопрос, правильно ли я делаю, что сохраняю результат в TextBox? Может, если сохранить во что-то другое, то работать будет легче?

Буду рад любым советам и примерам.
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2014, 21:30
Ответы с готовыми решениями:

Парсинг текста с сайта
Здравствуйте, подскажите пожалуйста как парсить текст с сайта на XAML. Мне с сайта просто слово надо которое обновляется постоянно... ...

Парсинг текста с сайта
Как получить текст на основе xNet c сайта между тегами. Без использования webBrowser1 Я читал тему на этом сайте, но она для...

Парсинг текста с запрещенного сайта через прокси
Здравствуйте, мне нужно спарсить текст с сайта на который зайти можно только через TOR browser или анонимайзер. Как реализовать? ...

47
1651 / 714 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
05.01.2014, 21:49
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Imports System.Net
Imports System.IO
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim WC As New WebClient 
        Dim HtmlText As String, Result As String
        HtmlText = WC.DownloadString(New Uri("http://site.ru")) 
        WC.Dispose()
        Result = Pars(HtmlText, ("<title>"), ("</title>")) 
        MsgBox(Result)
    End Sub
    Public Function Pars(ByRef strSource As String, ByRef strStart As String, ByRef strEnd As String) As String
        Dim iPos As Integer, iEnd As Integer
        Dim strResult As String
        iPos = strSource.IndexOf(strStart, 0)
        iEnd = strSource.IndexOf(strEnd, iPos + strStart.Length)
        If iPos <> -1 AndAlso iEnd <> -1 Then
            strResult = strSource.Substring(iPos + strStart.Length, iEnd - (iPos + strStart.Length))
        End If
        Return strResult
    End Function
1
33 / 3 / 0
Регистрация: 19.10.2013
Сообщений: 53
05.01.2014, 21:51  [ТС]
Как я понял, для новичков самый лучший вариант пользоваться функцией:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Public Function Pars1(ByRef strSource As String, ByRef strStart As String, ByRef strEnd As String, Optional ByRef startPos As Integer = 0) As String
        Dim iPos As Integer, iEnd As Integer, lenStart As Integer = strStart.Length
        Dim strResult As String
        strResult = String.Empty
        iPos = strSource.IndexOf(strStart, startPos)
        iEnd = strSource.IndexOf(strEnd, iPos + lenStart)
        If iPos <> -1 AndAlso iEnd <> -1 Then
            strResult = strSource.Substring(iPos + lenStart, iEnd - (iPos + lenStart))
        End If
        Return strResult
    End Function
Кто-то может прокомментировать, как эта функция работает?
Можно конечно тупо перекопировать код, но хотелось бы именно понять каждую строку.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.01.2014, 21:54
Обычная функция поиска в строке определенного набора символов. Просматривается весть текст на предмет наличия двух строк, и если найдено-текст между ними возвращается.
1
1651 / 714 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
05.01.2014, 21:56
dimOk7, с виду ужасно не понятно с первого раза выглядит для новичка, а если разобрать все отдельно, то это как сказал insite2012 все очень просто.
1
33 / 3 / 0
Регистрация: 19.10.2013
Сообщений: 53
05.01.2014, 21:57  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Обычная функция поиска в строке определенного набора символов. Просматривается весть текст на предмет наличия двух строк, и если найдено-текст между ними возвращается.
Интуитивно я это понимаю, но хотелось бы понять, что именно делается в каждой строке кода.

P.S.
Ребят, если кто-то может это сделать, то закомментируйте пожалуйста код функции.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.01.2014, 22:01
Цитата Сообщение от dimOk7 Посмотреть сообщение
Ребят, если кто-то может это сделать, то закомментируйте пожалуйста код функции.
Это не сложно сделать, но толку будет с этого чуть менее чем никакого.

Не по теме:

Я уже не раз говорил и повторю - Мэтью Макдональд, "Рецепты программирования" - эта книга просто обязана быть у каждого, кто пишет на VB.NET. Есть ответы на большинство вопросов. Кстати, и именно такой (почти) пример там есть.:)

0
1651 / 714 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
05.01.2014, 22:01
Цитата Сообщение от dimOk7 Посмотреть сообщение
Ребят, если кто-то может это сделать, то закомментируйте пожалуйста код функции.
Ну так IntelliSense есть, кругом подсказки.
0
33 / 3 / 0
Регистрация: 19.10.2013
Сообщений: 53
05.01.2014, 22:07  [ТС]
Парни, спасибо и на этом!
Пойду разбираться сам тогда Если уж будет что-то никак не понять, то спрошу у вас.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.01.2014, 22:08
Вот упрощенная функция, ищет количество совпадений. Думаю, с ней разберетесь, и ту поймете.
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
Module Module1
 
    Sub Main()
        Dim Text As String = "Маша ела кашу, ла ла ла"
        Console.WriteLine(CountMatches(Text, "ла"))
        Console.Read()
    End Sub
    'Функция поиска количества совпадений в строке определенной подстроки
    'один из недостатков-ошибка по количеству совпадений из-за извлечения подстрок из строки
    'для поиска совпадений целых слов не пригодна
    Private Function CountMatches(ByVal StringToSearch As String, ByVal SerchFor As String) As Integer
        Dim Position As Integer = 0
        Dim Matches As Integer = 0
        Do
            Position = StringToSearch.IndexOf(SerchFor, Position)
            If Position <> -1 Then
                Matches += 1
                Position += SerchFor.Length
            End If
        Loop Until Position = -1
        Return Matches
    End Function
End Module
1
1651 / 714 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
05.01.2014, 22:10
dimOk7, оке. еще есть фишка смотреть описание по функции/методу в справке MSDN.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
05.01.2014, 22:17
Везет VB-эшникам, так крепко отметили Новый год, что собрались парсить HTML через IndexOf и Substring.
По теме - HAP, SgmlReader
1
33 / 3 / 0
Регистрация: 19.10.2013
Сообщений: 53
05.01.2014, 22:19  [ТС]
Цитата Сообщение от Release Посмотреть сообщение
dimOk7, оке. еще есть фишка смотреть описание по функции/методу в справке MSDN.
Я ею не умею пользоваться, справкой этой заморской. Вернее не понимаю большую часть текста, что там написано))) Поэтому, как-то не особо у меня MSDN прижился.
0
1651 / 714 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
05.01.2014, 22:30
Петррр, тему нужно внимательно читать. ТС начинающий, ему такие "прибомбасы" не потянуть.

Не по теме:

По себе людей не судят ;)

0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
05.01.2014, 22:34
Release, именно, друг мой, ТС начинающий программист, как вы метко заметили, и учить его парсить HTML через IndexOf/Substring - плохо. HTML-парсеры не пишутся в один присест. И лучше ему доказать, что нужно использовать готовый парсер, чем писать свой костыль, который придется переписывать, едва появится какая новая проблема.
1
1651 / 714 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
05.01.2014, 22:39
Петррр, соглашусь. этот костыль не гибок, но все же, для начала нужно образно видеть, как это реализовано, а потом переходить к готовым вариант парсинга (внутрь, которых не заглянешь и не посмотришь, как осуществляется сам процесс). Это мое ИМХО, по мне так я всегда начинал с самого простого, да и пока все сижу на этом костыле, так как с парсингом инфы я вообще не работаю, а за ссылки спасибо, пригодятся на будущие
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
05.01.2014, 22:44
dimOk7, обычно парсеры предназначены для обработки большого количества информации, и делается это в многопоточном режиме. Сделайте обычное консольное приложение, GUI для таких целей не нужен (если вы конечно не для секретарш пишите программу).
1
33 / 3 / 0
Регистрация: 19.10.2013
Сообщений: 53
05.01.2014, 23:40  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение
dimOk7, обычно парсеры предназначены для обработки большого количества информации, и делается это в многопоточном режиме. Сделайте обычное консольное приложение, GUI для таких целей не нужен (если вы конечно не для секретарш пишите программу).
Петррр, Я хорошо представляю для чего нужны парсеры, т.к. у меня не один интернет магазин, который доводилось в свое время наполнять тысячами товаров, поэтому о парсерах знаю не по наслышке.
Пишу не для секретарш, а для себя, просто саморазвитие так сказать

Что касается IndexOf/Substring и HAP, я никуда не спешу и рассмотрю оба варианта.
В любом случае, всем спасибо помогли и дали пищу для ума.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.01.2014, 00:11
Вот, нашел в сети пример и dll-ку на шарпе. Переделал пример на VB.NET, dll-ку скомпилировал. Вроде работает, правда я с html не особо еще разбирался... Кто часто сталкивается, попробуйте. Вот мой тестовый текст и в архиве сама готовая dll.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
 Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Dim Client As New System.Net.WebClient
        Dim Str As String
        Str = Client.DownloadString(New Uri("http://www.yandex.ru"))
        Dim Reader = New SgmlReader
        Reader.InputStream = New System.IO.StringReader(Str)
        Dim Xmldocument = New Xml.XmlDocument(Reader.NameTable)
        Xmldocument.Load(Reader)
 
        Dim links As Xml.XmlNodeList = Xmldocument.GetElementsByTagName("a")
        TextBox1.AppendText("Найдено: " & links.Count.ToString)
    End Sub
Вложения
Тип файла: rar HtmlParser.rar (34.4 Кб, 108 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2014, 00:11
Помогаю со студенческими работами здесь

Парсинг русского текста с сайта. Неизвестные символы вместо кириллицы
С помощью WebRequest запрашиваю html код страницы, но вместо русских букв там крокозябры. Пробовал кодировать поток в utf8 (У сайта...

Парсинг данных с сайта или страницы сайта
Здравствуйте, добрые люди! Есть задача спарсить данные с страницы соц сети. Или просто со страницы с помощью js. На пхп не предлагать....

Парсинг сайта
Здравствуйте программисты :) Помогите пожалуйста с такой проблемкой: нужно вытащить IP адрес с сайта (http://www.myip.ru/) и занести в...

Парсинг сайта
Добрый день! Не могли бы помочь сделать Парсинг с сайта http://stroymat-rzn.org/stroitelnye-materialy-prajs-list.html Есть код , но он...

Парсинг сайта
Здравствуйте уважаемые программисты, у меня задача распарсить сайт http://lira.battlespace.ru/game.html, помогите а, куда копать? во первых...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru