Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распарсить HTML 
:(
    Опции темы
Zhenek
Дата 11.10.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 31.5.2007

Репутация: 1
Всего: 1



Добрый день.
Получаю код страники сайта так :

Код

        Dim WebClient As System.Net.WebClient = New System.Net.WebClient
        Dim str As String = WebClient.DownloadString(TextBox1.Text)


Как мне вытащить из кода сайта все значения заключенные в  :

<a href="http://site.ru/index.php?kat=blabla&name=TO_CHTO_MNE_NUZHNO">BLABLA</a>

Подскажите плиз.
--------------------
<удалено администрацией>
PM MAIL   Вверх
diadiavova
Дата 11.10.2009, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Обычно sgmlreader помогает
http://developer.mindtouch.com/SgmlReader#
он грузит вебстраничку как xml-документ, после чего можно использовать стандартные средства работы с XML

оф страничка
http://code.msdn.microsoft.com/SgmlReader


Это сообщение отредактировал(а) diadiavova - 11.10.2009, 18:55


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Zhenek
Дата 11.10.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 31.5.2007

Репутация: 1
Всего: 1



Хотелось бы стандартными средствами т.к хотелось бы научиться и это было бы не плохим примером.
--------------------
<удалено администрацией>
PM MAIL   Вверх
diadiavova
Дата 11.10.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



А что ты понимаешь под стандартными средствами? Этот компонент на сайта майкрософт лежит, его используют почти все, кому это надо. Из стандартных средств есть только веббраузер. Можно, конечно подключить библиотеку mshtml, но уверяю тебя - это гораздо хуже. Хотя попробуй.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Zhenek
Дата 12.10.2009, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 31.5.2007

Репутация: 1
Всего: 1



Я имею ввиду  цикл + регулярка
--------------------
<удалено администрацией>
PM MAIL   Вверх
diadiavova
Дата 12.10.2009, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Zhenek @  12.10.2009,  03:42 Найти цитируемый пост)
Я имею ввиду  цикл + регулярка 

Ты считаешь, что парсить хтмл регулярками - это стандартный способ? smile 
Можно, конечно при желании написать такую регулярку, но это - (имхо) изврат. Да и гарантировать, что она будет работать корректно невозможно. В то же время есть простые и надёжные способы решения куда более сложных задач по обработке хтмл и мне непонятно, почему не использовать их.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
diadiavova
Дата 12.10.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Короче, примерчик я тебе набросал. О выбирает ссылки из документа и выводит в текстбокс.
Код

Imports System.Net
Imports System.Text.RegularExpressions
Imports System.IO
Imports System.Text

Public Class Form1
    Dim linkRe As New Regex("(?<start><a(?<attr>[^>])*>)(?<cont>(?!</a).)*(?<end></a\s*>)", _
    RegexOptions.Compiled Or RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
        Extract(Me.TextBoxAddress.Text)
    End Sub

    Sub Extract(ByVal address As String)

        Try
            Dim req = CType(WebRequest.Create(address), HttpWebRequest)
            Dim response As HttpWebResponse
            response = req.GetResponse
            Dim docText As String
            Dim sr As New StreamReader(response.GetResponseStream, Encoding.GetEncoding(1251))
            docText = sr.ReadToEnd()
            Dim ms = linkRe.Matches(docText)
            Me.Text = ms.Count
            For Each m As Match In ms
                TextBoxContent.AppendText(m.Value & vbNewLine & vbNewLine)
            Next
            sr.Dispose()
        Catch
        End Try
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Extract("http://www.google.ru/")
    End Sub
End Class


На сколько корректно работает - не знаю, попробовал только на гугле

Добавлено @ 15:02
Там ещё в примере кнопочка была, при нажатии которой, извлекается инфа из страницы, адрес которой указан в ещё одном текстбоксе. Ну разберёшься короче.

Это сообщение отредактировал(а) diadiavova - 12.10.2009, 15:04


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Zhenek
Дата 14.10.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 31.5.2007

Репутация: 1
Всего: 1



Спс. все отлично работает. Нужно теперь только переписать регулярку и все =)
--------------------
<удалено администрацией>
PM MAIL   Вверх
diadiavova
Дата 14.10.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Zhenek @  14.10.2009,  10:39 Найти цитируемый пост)
Нужно теперь только переписать регулярку и все
В смысле "переписать"? Я ведь там выделил группы, из них можно выбирать данные. То есть у объекта Match вытягиваешь свойство Group, там можно брать их по имени. Группа "start" возвратит начальный тэг, группа "cont" - содержимое. Из группы "start" можно извлечь подгруппу "attr", которая будет содержать все атрибуты в виде текста. Из этого текста можно извлечь атрибуты отдельной регуляркой. 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.