Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/65: Рейтинг темы: голосов - 65, средняя оценка - 4.57
3 / 3 / 4
Регистрация: 06.05.2010
Сообщений: 18

Поиск текста по html странице

06.10.2011, 18:22. Показов 12490. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, комрадс. Недавно ради интереса решил сделать себе простенький парсер нужных мне слов на веб-страничке. И столкнулся с небольшой проблемой. Вот пример того, что мне нужно отпарсить.
HTML5
1
2
3
4
5
6
7
8
9
<div class="lot" id="3115">
 
<div class="id">№ 3115</div>
 
<div class="title"><a href="/lot/3115/">рандомный_текст</a></div>
 
<div class="image">
                
            </div>
Собственно нужно проверять наличие на вебстранице слов "рандомный_текст", и если они там есть, то выводить то, что находится в
HTML5
1
<a href="/lot/3115/">
(ссылку) + само слово. Проблема в самом поиске. Я пробовал использовать один из готовых парсеров для тегов(и пробовал переделать его под свои нужды), но он все равно выдает слишком много лишней информации.
Собственно вопрос: как лучше организовать процесс, или может использовать какие-то готовые решения?
Имеющиеся тут темы просмотрел, но там в основном решения с использование регулярных выражений, а для поиска по вебстранице они как бы не очень подходят(вобщем нужно что-то без регекспов).
Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2011, 18:22
Ответы с готовыми решениями:

Поиск значения в html странице
Добрый день уважаемые! Учу C#. Знаю его только на полкнижки:) Я уже облазил форум по своей проблеме. Не писал бы если бы что то...

Поиск русских слов на html странице
Пока делаю поиск на html сранице между буржуйскими символами, все работает хорошо, но как только поподаеться русская буква, результата ни...

Поиск по html странице
Всем привет! Хочу сделать поиск по странице, в инете ни чего нету, собрал по кускам, всё хорошо работает, вот только он почему то не ищет...

4
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 435
06.10.2011, 18:30
Не знаю хорошая моя идея или нет, но я её все равно напишу
html код по идее можно загрузить в xmlDocument. А после этого правильно пройтись по узлам DOM модели этого документа.
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
06.10.2011, 18:37
Html Agility Pack
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
06.10.2011, 21:43
lasbat, типа этого.
C#
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
static void Main(string[] args)
{
     string html = "<br><hr><div class=\"lot\" id=\"3115\">" +
                          "<div class=\"id\">№ 3115</div>" + 
                          "<div class=\"title\"><a href=\"/lot/3115/\">рандомный_текст</a></div>" +
                          "<div class=\"image\"></div>" +
                          "<div class=\"lot\" id=\"3115\">" +
                          "\n\t<div class=\"id\">№ 3115</div>" +
                          "<div class=\"title\"><a href=\"/uri/foo.aspx\">рандомный_текст</a></div>" +
                          "<div class=\"image\"></div>";
 
      int start  = 0, end, pos;
      string txt = "", href = "";
 
      while (true)  // в поисках "рандомный_текст"
      {
            if ((start = html.IndexOf("рандомный_текст", start)) != -1) {
                     if ((end = html.IndexOf("</a>", start)) != -1)
                          txt = html.Substring(start, end - start);
                     else
                          break;
                    href = "";
                    for (int i = start; i > 0; i--) {
                         if (html[i] != '<')
                                continue;
                         if ((pos = html.IndexOf("href=\"", i)) != -1){
                               pos += 6;
                               if ((start = html.IndexOf("\"", pos)) != -1)
                                      href = html.Substring(pos, start - pos);
                         }
                         break;
               }
                start = end;
                // показываем результат в консоль
                Console.WriteLine("{0}\t{1}", href, txt);
            } else
                 break;
       }
      Console.ReadKey();
}
1
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
06.10.2011, 22:12
C#
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
using System;
using System.Linq;
 
using HtmlAgilityPack;
 
namespace ConsoleApplicationTest {
    class Program {
        static void Main( string[] args ) {
            string html = "<br><hr><div class=\"lot\" id=\"3115\">" +
                          "<div class=\"id\">№ 3115</div>" +
                          "<div class=\"title\"><a href=\"/lot/3115/\">рандомный_текст</a></div>" +
                          "<div class=\"image\"></div>" +
                          "<div class=\"lot\" id=\"3115\">" +
                          "\n\t<div class=\"id\">№ 3115</div>" +
                          "<div class=\"title\"><a href=\"/uri/foo.aspx\">рандомный_текст</a></div>" +
                          "<div class=\"image\"></div>";
 
            HtmlDocument document = new HtmlDocument();
            document.LoadHtml( html );
            var nodes = document.DocumentNode
                .Descendants( "a" )
                .Where( node => node.Attributes.Contains( "href" ) &&
                                node.InnerText.Trim() == "рандомный_текст" )
                .Select( node => new {
                    Text = node.InnerText.Trim(),
                    Link = node.GetAttributeValue( "href", "" ).Trim()
                } );
 
            foreach ( var htmlNode in nodes ) {
                Console.WriteLine( htmlNode );
            }
 
            Console.ReadKey();
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2011, 22:12
Помогаю со студенческими работами здесь

Поиск текста на странице
Всем привет! На странице есть такой div: &lt;div id=&quot;errorExplanation&quot;&gt;&lt;ul&gt; &lt;li&gt;Укажите пожалуйста причину в поле Комментарий...

Поиск текста на странице
Всем привет! Подскажите как реализовать Необходимо произвести поиск на странице нескольких фраз, например &quot;Переменная равна:&quot;...

Поиск текста на странице браузера
Нужно на странице браузера найти текст: Версия Firefox: 28.0 Версия Autoit: 3.3.10.2 Версия MozRepl: 1.1.2 Пытаюсь таким...

Поиск текста на странице с Selenium
Привет камрады. Решил засесть за web с питоном, появился вопросик. Работаю с Selenium, разобрался как вводить логопасы и тд, но...

Поиск текста в странице браузера
Требуется помощь в реализации поиска на веб странице c#. Искал по всюду не мог найти. В общем к делу. Есть переменная oooo1.contains...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru