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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.06.2014, 21:24   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию Regexp

Всем доброго времени, как спарсить регулярками с исходного кода

Код:
                                            </tr>
                                            <tr>
                                                <td>Short</td>
                                                <td>40%</td>
                                                <td>7117.45 Lots</td>
                                                <td>19649</td>
                                            </tr>
                                            <tr>
                                                <td>Long</td>
                                                <td>59%</td>
                                                <td>10653.49 Lots</td>
                                                <td>30194</td>
                                            </tr>
                                        </tbody>
Например надо только
Код:
<td>Long</td>
                                                <td>59%</td> // это надо 
                                                <td>10653.49 Lots</td>   // НЕ НАДО
                                                <td>30194</td>              // НЕ НАДО

у меня был где-то пример я не помню помоему на этом форуме я видел толи где...
мне надо спарсить таблицу которая находится над графиком.... Решил спарсить регулярками
может вы чо по советуете свое? ну как лучше было бы и практичней....
вот сайт если нужен
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 18.06.2014, 21:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
может вы чо по советуете свое?
Недавно задавал вопрос по поводу разбора сайта: http://www.programmersforum.ru/showthread.php?t=262558
Если применить к этому XPath то можно проход делать запросами - быстрее будет. Я правда у себя не использовал его для разбора HTML, но вроде можно сделать.
Короче говоря я предлагаю вместо регулярок использование MSHTML
I'm learning to live...
Stilet вне форума
Старый 19.06.2014, 05:28   #3
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Недавно задавал вопрос по поводу разбора сайта: http://www.programmersforum.ru/showthread.php?t=262558
Если применить к этому XPath то можно проход делать запросами - быстрее будет. Я правда у себя не использовал его для разбора HTML, но вроде можно сделать.
Короче говоря я предлагаю вместо регулярок использование MSHTML
У меня chromium стоит....
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 19.06.2014, 07:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты хочешь прямо через хромиум по DOM страницы проходится?
I'm learning to live...
Stilet вне форума
Старый 19.06.2014, 20:35   #5
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты хочешь прямо через хромиум по DOM страницы проходится?
Дело не в том что я не хочу, хотелось бы регулярками так как DOM не знаю а учить долго))))
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 19.06.2014, 20:59   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну... Мое дело - предложить. Я регулярки редко использую, и не парсил им сайты.
I'm learning to live...
Stilet вне форума
Старый 20.06.2014, 18:36   #7
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну... Мое дело - предложить. Я регулярки редко использую, и не парсил им сайты.
Я видел тут был пример где-то на форуме но не могу найти....

Вопрос остается открытым кто знает еще способ пишите)
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 20.06.2014, 18:46   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Можно и стандартными функциями Insert, Copy, Delete, Length и т.п.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума
Старый 20.06.2014, 20:02   #9
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Можно и стандартными функциями Insert, Copy, Delete, Length и т.п.
можно не спорю) только я их не знаю ща буду читать.........
Уже изучил)
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Fahman; 20.06.2014 в 20:25.
Fahman вне форума
Старый 20.06.2014, 20:33   #10
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Код:
uses
  RegExpr;

function ParsFromString(AValueBegin, AValue, AValueEnd: string): string;
begin
  Result := Copy(AValue, Pos(AValueBegin, AValue) + Length(AValueBegin), MaxInt);
  Result := Copy(Result, 1, Pos(AValueEnd, Result) - 1);
end;

{ TMainForm }

procedure TMainForm.ParsingButtonClick(Sender: TObject);
const
  ValueBegin = '<table class="center paddTD10 dataTable maxWidth"';
  ValueEnd = '</table>';
var
  RegExpr: TRegExpr;
  AValue: string;
  S: string;
begin
  // в AValue должен находиться полный исходный код страницы
  AValue := 'view-source:http://www.myfxbook.com/community/outlook/EURUSD';

  AValue := ParsFromString(ValueBegin, AValue, ValueEnd);

  RegExpr := TRegExpr.Create;
  try
    RegExpr.Expression := '<tr>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)</tr>';

    if RegExpr.Exec(AValue) then
    repeat
      S := '';
      S := S + 'Action = ' + RegExpr.Match[2] + #13#10;
      S := S + 'Percentage = ' + RegExpr.Match[4] + #13#10;
      S := S + 'Volume = ' + RegExpr.Match[6] + #13#10;
      S := S + 'Positions = ' + RegExpr.Match[8] + #13#10;

      ShowMessage(S);

    until not RegExpr.ExecNext;
  finally
    RegExpr.Free;
  end;
end;
Lardes вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с RegExp Gdasar C++ Builder 1 07.03.2014 23:35
Проблема с RegExp Руслантус Общие вопросы .NET 3 26.02.2011 21:01
regexp в С++ Пепел Феникса Общие вопросы C/C++ 2 10.11.2010 18:26
Regexp на чистом С++ 1datr Общие вопросы C/C++ 1 05.11.2010 21:44
C++ Builder RegExp Namolem Помощь студентам 1 19.01.2010 23:13