Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.07.2014, 23:53
max_delphi max_delphi вне форума
Прохожий
 
Регистрация: 27.03.2014
Адрес: На Земле
Сообщения: 21
Версия Delphi: Delphi XE5
Репутация: 10
Вопрос Помогите распарсить страницу!?

Друзья, помогите распарсить одну страницу. Нужно достать заголовки и тексты. Парсить надо вот такой текст

Код HTML:
<script type="text/javascript"> var map = 0; var bannerData = new Array();;bannerData[0] = { 'text': 'Без первоначального взноса. Все комплектации в наличии! КАСКО в подарок!', 'title': 'Машины в кредит от 2,9% в Москве.', 'body': '', 'href': 'http:\/\/bs.yandex.ru\/count\/P3U6Lced-ca40000ZhCSM3m5N0AL0Pi1RaEt0Ym2YBeqzf02YQp3-pQOYHoTg8q64gOeYg1iNP2zhNTDnge1fQw6NWAD0P6rBFor1vClcGL2ZA0X0mcWe1CH3g-W8GC9b9-B2QUKkmYei3bbOmEkzGpD8aftGFu4iG6oX12vg8q64hlqdvVvcI2pxWHu4000', 'vcard': 'http:\/\/bs.yandex.ru\/count\/P3U6La79J7u40000ZhCSM3m5N0AL0Pi1RaEt0Ym2YBeqzf02YQp3-pQOYHoTg8q64gOeYg1iNP2zhNTDnge7fQw6NWAD0P6rBFor1vClcGL2ZA0X0mcWe1CH3g-W8GC9b9-B2QUKkmYei3bbOmEkzGpD8aftGFu4iG6oX12vg8q64hlqdvVvcI2pxWHu4000', 'phone': '+7#495#788-78-24#', 'domain': 'klarus-trade.ru', 'name': 'Автоцентр &quot;Klarus Trade&quot;', 'country': 'Россия', 'city': 'Москва', 'address': 'Академика Янгеля, д. 1, корп. 2', 'coords': [37.598483,55.594117], 'geoId': parseInt(213) };bannerData[1] = { 'text': 'Для регионов. 2 документа. Салон. 2 платежа + дорога за наш счет!', 'title': 'Автокредит от 4% в Москве!', 'body': '', 'href': 'http:\/\/bs.yandex.ru\/count\/P3U6LjhRTke40000ZhCSM3m5N0AL0Pi1RaEt0Ym2CeY_KZ7E1ecd9mf-c8aSdQq7nH2cXGYAjfUs906zipW7QG6g0QMZQbm3lAuRTWED0P6rBFor1vClcGL2ZAWxaGEsey090RMMDk6WeB002Q-eEv43iw3mIGAqc2tefvfg1AYmG5bp1wxr3CqYIdT0_WIn0RA44Bcj1yKGk_IVb_cP8BFk17yI', 'vcard': 'http:\/\/bs.yandex.ru\/count\/P3U6LfNyJ3S40000ZhCSM3m5N0AL0Pi1RaEt0Ym2CeY_KZ7E1ecd9mf-c8aSdQq7nH2cXGYAjfUs906zipW7QG6g1wMZQbm3lAuRTWED0P6rBFor1vClcGL2ZAWxaGEsey090RMMDk6WeB002Q-eEv43iw3mIGAqc2tefvfg1AYmG5bp1wxr3CqYIdT0_WIn0RA44Bcj1yKGk_IVb_cP8BFk17yI', 'phone': '+7#495#966-07-37#', 'domain': 'mkadauto.ru', 'name': 'Автоцентр Олимп', 'country': 'Россия', 'city': 'Москва', 'address': 'Горбунова, д. 12, корп. 2\/5', 'coords': [37.382896,55.726264], 'geoId': parseInt(213) };var citiesHash = {};citiesHash[213] = "Москва";</script>

Мне нужно выбрать из этой массы заголовки, т.е. 'titles'. Например, из этой строчки

'title': 'Купите машину в кредит быстро!',

мне нужен только сам заголовок, т.е.

Купите машину в кредит быстро!

И так все заголовки надо спарсить. Использую модуль RegExpr. Мой код для парсинга:

Код:
var
  RegExp: TRegExpr;
  StrPage, StrTitle: TStringList;

begin
  RegExp.Expression := '\''title\'':\s\''(.+)\'',\r\n';
  if RegExp.Exec(StrPage.Text) then
    repeat
      StrTitle.Add(RegExp.Match[1]);
      Memo1.Lines.Add(RegExp.Match[1]); // для просмотра вывожу заголовки в Memo
    until not RegExp.ExecNext;
end;

Код:
StrPage
- это сам текст, который надо парсить;
Код:
StrTitle
- массив заголовков.

Но при таком рег. выражении, он выводит мне весь текст, т.е. все, что есть, практически. Вот какой получается результат:

Код HTML:
Машины в кредит от 2,9% в Москве.', 'body': '', 'href': 'http:\/\/bs.yandex.ru\/count\/IMsksX1RKK040WW0gQA0022Ej1nOF0LS0fK1cm5kGxS2B0A8kZJsa0A9hCFxDfY979seZGOIfYYAe6nTaBsjTqt6gW6bhePU0eq1aRKi_BK7ao-P1KACe2432Q2W4n4Ehw0X0mcKdui9fvIx2AYmEMLZ0wC1hl7mcS1WTq3-1B41ieGGU0y0', 'vcard': 'http:\/\/bs.yandex.ru\/count\/IMsksdGEoiq40WW0gQA0022Ej1nOF0LS0fK1cm5kGxS2B0A8kZJsa0A9hCFxDfY979seZGOIfYYAe6nTaBsjTqt6gWUbhePU0eq1aRKi_BK7ao-P1KACe2432Q2W4n4Ehw0X0mcKdui9fvIx2AYmEMLZ0wC1hl7mcS1WTq3-1B41ieGGU0y0', 'phone': '+7#495#788-78-24#', 'domain': 'klarus-trade.ru', 'name': 'Автоцентр &quot;Klarus Trade&quot;', 'country': 'Россия', 'city': 'Москва', 'address': 'Академика Янгеля, д. 1, корп. 2', 'coords': [37.598483,55.594117], 'geoId': parseInt(213) };bannerData[1] = { 'text': 'Для регионов. 2 документа. Салон. 2 платежа + дорога за наш счет!', 'title': 'Автокредит от 4% в Москве!', 'body': '', 'href': 'http:\/\/bs.yandex.ru\/count\/IMskskIAsMm40WW0gQA0022Ej1nOF0LS0fK1cm5kGxS2B08oYBzICSu6YQSd2dwOYHoThGV54AQ528gsbxOa0RspE0Tf0Qe1fQDgN0EyhXjs0uq1aRKi_BK7ao-P1KACg3kH0xQZm0a1jPOsuQ2Wi009hwWxaGEpeF190hIOBUYdcce4gB10MNC7em6kyV2Pm61tGFu4iG6oX11_4G00', 'vcard': 'http:\/\/bs.yandex.ru\/count\/IMskscTcYV440WW0gQA0022Ej1nOF0LS0fK1cm5kGxS2B08oYBzICSu6YQSd2dwOYHoThGV54AQ528gsbxOa0RspE0Tf0Qe7fQDgN0EyhXjs0uq1aRKi_BK7ao-P1KACg3kH0xQZm0a1jPOsuQ2Wi009hwWxaGEpeF190hIOBUYdcce4gB10MNC7em6kyV2Pm61tGFu4iG6oX11_4G00', 'phone': '+7#495#966-07-37#', 'domain': 'mkadauto.ru', 'name': 'Автоцентр Олимп', 'country': 'Россия', 'city': 'Москва', 'address': 'Горбунова, д. 12, корп. 2\/5', 'coords': [37.382896,55.726264], 'geoId': parseInt(213)

Т.е. он выделяет только первый заголовок

Машины в кредит от 2,9% в Москве.',

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

Потому что, например, на php это рег. выражение работает на УРА. А в Delphi все приобретает совсем иной смысл... Почему так?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:23.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025