Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2012, 20:16   #1
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию Парсинг

Здравствуйте! подскажите пожалуйста как можно вытащить несколько слов из htm документа .
Документ такой
Код HTML:
 <div id="weather10"><div id="blockDays" class="bd1">
	<div class="tabs">
		<div class="first"></div>
        <div class="main loaded" id="bd1">
            <p><a class="day-link" data-link="#погода-харьков/2012-04-15" href="http://sinoptik.ua/погода-харьков/2012-04-15">Воскресенье</a></p>
            <p class="date dateFree">15</p>
            <p>апреля</p>
            <div class="weatherIco d420"><img src="http://sinoptik.ua/img/t.gif" alt="Сплошная облачность, дождь" title="Сплошная облачность, дождь" /></div>
            <div class ="temperature">
                <div class="min">мин. <span>+13</span></div>
                <div class="max">макс. <span>+22</span></div>
            </div>
        </div>
        		<div class="mid1"></div>
		        <div class="main " id="bd2">
            <p><a class="day-link" data-link="#погода-харьков/2012-04-16" href="http://sinoptik.ua/погода-харьков/2012-04-16">Понедельник</a></p>
            <p class="date ">16</p>
            <p>апреля</p>
            <div class="weatherIco d100"><img src="http://sinoptik.ua/img/t.gif" alt="Небольшая облачность" title="Небольшая облачность" /></div>
            <div class ="temperature">
                <div class="min">мин. <span>+15</span></div>
                <div class="max">макс. <span>+22</span></div>
            </div>
        </div>
        		<div class="mid2"></div>
		        <div class="main " id="bd3">
            <p><a class="day-link" data-link="#погода-харьков/2012-04-17" href="http://sinoptik.ua/погода-харьков/2012-04-17">Вторник</a></p>
            <p class="date ">17</p>
            <p>апреля</p>
            <div class="weatherIco d400"><img src="http://sinoptik.ua/img/t.gif" alt="Сплошная облачность" title="Сплошная облачность" /></div>
            <div class ="temperature">
                <div class="min">мин. <span>+12</span></div>
                <div class="max">макс. <span>+19</span></div>
            </div>
        </div>
        		<div class="mid3"></div>
		        <div class="main " id="bd4">
            <p><a class="day-link" data-link="#погода-харьков/2012-04-18" href="http://sinoptik.ua/погода-харьков/2012-04-18">Среда</a></p>
            <p class="date ">18</p>
            <p>апреля</p>
            <div class="weatherIco d400"><img src="http://sinoptik.ua/img/t.gif" alt="Сплошная облачность" title="Сплошная облачность" /></div>
            <div class ="temperature">
                <div class="min">мин. <span>+13</span></div>
                <div class="max">макс. <span>+19</span></div>
            </div>
        </div>
        		<div class="mid4"></div>
		        <div class="main " id="bd5">
            <p><a class="day-link" data-link="#погода-харьков/2012-04-19" href="http://sinoptik.ua/погода-харьков/2012-04-19">Четверг</a></p>
            <p class="date ">19</p>
            <p>апреля</p>
            <div class="weatherIco d400"><img src="http://sinoptik.ua/img/t.gif" alt="Сплошная облачность" title="Сплошная облачность" /></div>
            <div class ="temperature">
                <div class="min">мин. <span>+16</span></div>
                <div class="max">макс. <span>+21</span></div>
            </div>
        </div>
        		<div class="mid5"></div>
		        <div class="main " id="bd6">
            <p><a class="day-link" data-link="#погода-харьков/2012-04-20" href="http://sinoptik.ua/погода-харьков/2012-04-20">Пятница</a></p>
            <p class="date ">20</p>
            <p>апреля</p>
            <div class="weatherIco d410"><img src="http://sinoptik.ua/img/t.gif" alt="Сплошная облачность, мелкий дождь" title="Сплошная облачность, мелкий дождь" /></div>
            <div class ="temperature">
                <div class="min">мин. <span>+11</span></div>
                <div class="max">макс. <span>+16</span></div>
            </div>
        </div>
        		<div class="mid6"></div>
		        <div class="main " id="bd7">
            <p><a class="day-link" data-link="#погода-харьков/2012-04-21" href="http://sinoptik.ua/погода-харьков/2012-04-21">Суббота</a></p>
            <p class="date dateFree">21</p>
            <p>апреля</p>
            <div class="weatherIco d410"><img src="http://sinoptik.ua/img/t.gif" alt="Сплошная облачность, мелкий дождь" title="Сплошная облачность, мелкий дождь" /></div>
            <div class ="temperature">
                <div class="min">мин. <span>+12</span></div>
                <div class="max">макс. <span>+18</span></div>
            </div>
        </div>
        		
        		
мне нужно вытащить все слова между 'alt=' и 'title='

Код HTML:
alt="Сплошная облачность, дождь" title=
их там 10

htm :
Вложения
Тип файла: rar 1.rar (953 байт, 10 просмотров)
Gudzik11 вне форума Ответить с цитированием
Старый 15.04.2012, 20:34   #2
arxlex
Пользователь
 
Регистрация: 18.01.2012
Сообщений: 23
По умолчанию

Используй компонент TWebBrowser
Mess With the Best, Die Like the Rest
arxlex вне форума Ответить с цитированием
Старый 15.04.2012, 20:35   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Очевидно, нужно использовать какой-либо из алгоритмов поиска подстроки в строке пригодный для работы с длинными строками (в этой области до сих пор проводятся исследования и изобретаются эффективные алгоритмы - но можно взять и простейший).
Ну а затем поочередно искать первую и вторую ключевые последовательности, выделяя участки между ними.
s-andriano вне форума Ответить с цитированием
Старый 15.04.2012, 20:44   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тут вполне достаточно Pos,PosEx,Copy.
ищем img, потом ищем аттрибуты ваши.
если не уверены что каждый нужный вам img имеет аттрибуты, то ищете конец тега, и смотрите чтоб не уйти за него.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.04.2012, 20:46   #5
alkador
Пользователь
 
Регистрация: 01.05.2010
Сообщений: 29
По умолчанию

Недавно выкладывал парсер http://programmersforum.ru/showthread.php?t=196104
Вот код копирования текста, находящегося в строке STRING между СЛОВО1 и СЛОВО2
Код:
Copy(STRING,Pos('СЛОВО1', STRING)+1, Pos('СЛОВО2', STRING)-Pos('СЛОВО1', STRING)-1)
Только к первому Pos-у надо будет добавить (и отнять в конце функции) не единицу, а число символов в слове. Надеюсь понятно почему)

Последний раз редактировалось alkador; 15.04.2012 в 20:52.
alkador вне форума Ответить с цитированием
Старый 15.04.2012, 20:50   #6
arxlex
Пользователь
 
Регистрация: 18.01.2012
Сообщений: 23
По умолчанию

и самое главное не забудь о ключевых разделителях:
Цитата:
first, mid1, mid2 и т.д.

или

bd1, bd2, bd3 и т.д.
Mess With the Best, Die Like the Rest
arxlex вне форума Ответить с цитированием
Старый 15.04.2012, 21:51   #7
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Цитата:
Сообщение от alkador Посмотреть сообщение
Недавно выкладывал парсер http://programmersforum.ru/showthread.php?t=196104
Вот код копирования текста, находящегося в строке STRING между СЛОВО1 и СЛОВО2
Код:
Copy(STRING,Pos('СЛОВО1', STRING)+1, Pos('СЛОВО2', STRING)-Pos('СЛОВО1', STRING)-1)
Только к первому Pos-у надо будет добавить (и отнять в конце функции) не единицу, а число символов в слове. Надеюсь понятно почему)
Парсер это интересно завтра попробую .

Pos,PosEx,Copy.

Memo2.Text := copy(Memo1.Text,pos('alt=',Memo1.Te xt)+5,pos('title=',Memo1.Text)-pos('alt=',Memo1.Text)-7);
всё сделал спасибо!
Gudzik11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
парсинг Pein95 Работа с сетью в Delphi 4 01.12.2011 02:06
парсинг Pein95 C# (си шарп) 3 16.09.2011 01:24
Парсинг. igor90 Microsoft Office Excel 1 03.11.2010 02:41