Друзья, помогите распарсить одну страницу. Нужно достать заголовки и тексты. Парсить надо вот такой текст
Код 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': 'Автоцентр "Klarus Trade"',
'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;
- это сам текст, который надо парсить;
- массив заголовков.
Но при таком рег. выражении, он выводит мне весь текст, т.е. все, что есть, практически. Вот какой получается результат:
Код 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': 'Автоцентр "Klarus Trade"',
'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 все приобретает совсем иной смысл... Почему так?