Програмное извлечения текста из Html страницы

Тема в разделе "Visual Basic", создана пользователем zazaza, 16 май 2011.

  1. zazaza

    zazaza Гость

    язык : Visual Basic . NET (Это чень важно потому что в google.com очень очень много вариантов нна языки : C++/ Delphi/ C# на VB.нет почти ничего нету а то что есть мне не походит)

    ____________

    Объекты на форме:

    Компонент : WEBBROWSER1
    Кнопка : BUTTON1

    Задача программы :

    Зайти на сайт: http://rutube.ru/tracks/4189121.html?v=047...a9e9063619bb17d

    Програмно извлечь код плеера:
    Код (LotusScript):
    <OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/0478f5ae295301ef0a9e9063619bb17d"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="http://video.rutube.ru/0478f5ae295301ef0a9e9063619bb17d" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" ></EMBED></OBJECT>
    Исходный код страницы показывает следующий код:

    Код (LotusScript):
    <li>
    <p>Код плеера</p>
    <input class="address" tabindex="2" type="text" id="pcode" name="" value='<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/0478f5ae295301ef0a9e9063619bb17d"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="http://video.rutube.ru/0478f5ae295301ef0a9e9063619bb17d" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" ></EMBED></OBJECT>' onclick='selectText(this)' readonly="1" />
    <a href="java script:void(0)" onclick='textCopyIEiprEx(document.getElementById("pcode"),PCODE_COPIED_SUCCESS,PCODE_COPIED_ERROR)' title="Копировать"></a>
    </li>
    Пробовал програмно обращаться к атрибутам / id / value / tabindex но что то без результатно

    Пробовал например такой вариант (не получилось):

    Код (LotusScript):
    dim codeee as string

    Dim firstcode As HtmlElementCollection = WebBrowser1.Document.All

    For Each webelementss As HtmlElement In firstcode

    If webelementss.GetAttribute("title") = "название видео" Then

    codeee = webelementss.GetAttribute("value").ToString()
    debug.print (codeee)
    End If

    Next
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Если без заморочек, получается что-то наподобие:
    Код (LotusScript):
    Dim code As String = String.Empty;

    Dim element As HtmlElement = browser.Document.GetElementById("TrP_2");
    Dim ul As HtmlElement = element.GetElementsByTagName("ul").Item(0);

    For Each li As HtmlElement In ul.Children
    Dim children As HtmlElementCollection = li.GetElementsByTagName("p");
    If children.Count > 0 And children.Item(0).InnerText = "Код плеера"
    HtmlElementCollection inputs = li.GetElementsByTagName("input");
    If (inputs.Count > 0)
    code = inputs.Item(0).GetAttribute("value");           
    End If
    Exit For
    End If
    Next
    В идеале надо бы побольше проверок всяких (на null и т.п.), чтобы совсем красиво было.
    З.Ы. На VB я сам не пишу, код переводил с C# на глазок, так что не обессудь за ошибки :)
     
  3. zazaza

    zazaza Гость

    Если бы я умел так же ловко как и ты переводить код с C# на Visual basic Net то проблем бы у меня небыло.

    Не могу его под VB.НЕт перевести ругается:

    я код не буду выделять в теги что бы было видно где ошибки ( может ты знаешь как поправить:
    ---------------------------------------------------------------------------------------
    Dim code As String = String.Empty

    Dim element As HtmlElement = browser.Document.GetElementById("TrP_2")
    Dim ul As HtmlElement = element.GetElementsByTagName("ul").Item(0)

    For Each li As HtmlElement In ul.Children
    Dim children As HtmlElementCollection = li.GetElementsByTagName("p")
    If children.Count > 0 And children.Item(0).InnerText = "Код плеера" Then
    HtmlElementCollection(inputs = li.GetElementsByTagName("input"))
    If (inputs.Count > 0) Then
    code = inputs.Item(0).GetAttribute("value")
    End If
    Exit For
    End If
    Next
    ---------------------------------------------------------------------------------------

    ОШИБКИ :


    Ошибка 2 "HtmlElementCollection" является типом и не может использоваться как выражение. C:\Documents and Settings\User\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 12 17 WindowsApplication1

    Ошибка 3 Имя "inputs" не объявлено. C:\Documents and Settings\User\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 12 39 WindowsApplication1

    Ошибка 4 Имя "inputs" не объявлено. C:\Documents and Settings\User\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 13 21 WindowsApplication1

    Ошибка 5 Имя "inputs" не объявлено. C:\Documents and Settings\User\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 14 28 WindowsApplication1
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    просто попробуй попрааить так:
    Dim inputs as HtmlElementCollection = li.GetElementsByTagName("input");
     
  5. zazaza

    zazaza Гость


    СПАСИБО спасибо огромнеейшее. Теперь пойду софт приводить в порядок.
     
  6. zazaza

    zazaza Гость

    Два вопроса есть

    1- Как зацепиться за текст "Ролик не доступен для просмотра в вашей строане"

    ошибка находится на этой странице: http://rutube.ru/tracks/2544286.html?v=461...8b30d4c6ad575cc

    В первом варианте "Извлечения текста из HTML страницы худо бедно но для меня более менее был понятен" там ещё за "ID" зацепились

    А тут за что хвататься тут одни CLASS стоят.
    Код (LotusScript):
    <div class="wcorn_t"><div class="wtl"></div><div class="wtr"></div></div>
    <div class="wcont">
    <div class="lCol">
    <!-- h3 class="green">Ролик недоступен для просмотра в Вашей стране</h3 -->
    <div class="error">
    <span>Ролик недоступен для просмотра в Вашей стране</span>
    </div

    и другой вопрос:
    Это уже по желанию если у вас настроение будет :)

    У кажной задачи есть какие то определённые требования
    например Если хочешь водить машину : Выучи правила Дорожного движеия.

    А в этой теме что бы научиться цепляться к страница можете посоветовать что же мне нужно зубрить
    PHP ? весь не осилю. может какието выборочные темы есть специально для этих целей? Как такие темы называются.

    Заранее спасибо
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    зубрить PHP не обязательно, но понимать хотя бы примерно с помощью гугля, что написано иногда может быть полезно. а вот HTML и работу с DOM понимать надо.
    возможно, достаточно проверить наличие <div class="error">.
     
  8. zazaza

    zazaza Гость

    Отлично, а можешь мне подкинуть материал по этой теме уже проверенный . На своё усмотрение(только не профессианальные учебники :) )
     
Загрузка...
Похожие Темы - Програмное извлечения текста
  1. seoman2
    Ответов:
    2
    Просмотров:
    2.323
  2. Allexei
    Ответов:
    1
    Просмотров:
    2.075
  3. profsbit
    Ответов:
    0
    Просмотров:
    1.043

Поделиться этой страницей