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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2016, 11:17   #11
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Спасибо!
Можете еще один раз выручить?))
У меня получился такой код:
Код:
function Parse(const tag1, tag2, source: string): TStrings;
var
 p, p2, len: Integer;
begin
 Result := nil;
 p := Pos(tag1, source);
 len := Length(tag1);
 p2 := PosEx(tag2, source, p + len + 1);
 if (p = 0) or (p2 = 0) then
    Exit;
 Result := TStringList.Create;
 while (p > 0) and (p2 > 0) do
  begin
     if p2 > p then
       Result.Add(Copy(source, p + len, p2 - p - len));
     p := PosEx(tag1, source, p2);
     p2 := PosEx(tag2, source, p + len + 1);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
  strings: TStrings;
  S : String;
begin
for i:=memo4.Lines.Count-1 downto 0 do
s:=idhttp1.Get(memo4.Lines[i]);
memo1.Text:=s;
for i:=Memo1.Lines.Count-1 downto 0 do
 if Pos('<meta name="', Memo1.Lines[i])>0 then Memo1.Lines.Delete(i);
 strings := Parse('name="', '"', Memo1.Lines.Text);
 if strings <> nil then
  begin
    Memo2.Lines.AddStrings(strings);;
    strings.Free;
    s := Memo2.Text;
s:= StringReplace('site: "'+memo4.lines.Text[i]+'data="'+s,#13#10,'=&', [rfReplaceAll]);
 if Length(s)>0 then
  if s[Length(s)]='&' then s:= Copy(s, 1, Length(s)-1);
Memo3.Text := s;
  end;
end;
Но +memo4.lines.Text[i](список сайтов)+ не работает(,то есть в memo3 должно получиться так site.ru data="sdfsdfsdf"
mitiay вне форума Ответить с цитированием
Старый 08.09.2016, 11:34   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

это
Цитата:
Код:
memo4.lines.Text[i]
ересь!!

у Вас в этом месте цикла вообще НЕТ!

приучите себя всегда ставить в начале цикла (после оператора DO)
ключевое слово BEGIN
а после окончания тела цикла - ключевое слово END

тогда будет понятно, что внутри цикла.

и форматируйте код. иначе это невозможно понять и читать.

p.s. что Вам нужно сделать - мне не понятно.
сформулируйте вопрос.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.09.2016, 11:37   #13
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Жесть. Лучшей дай что получаешь (ссылка на ресурс) и что надо вытащить
Shouldercannon вне форума Ответить с цитированием
Старый 08.09.2016, 11:59   #14
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

http://mobimeet.kz/login.php
2.site.ru/login.php
3.site.com/login.php
вот страницы мне нужно вытащить все пост переменные, и добавить их в memo
что я делал
s:=idhttp1.Get(memo4.Lines[i]); - парсил страницу
удалял все ненужное if Pos('<meta name="', Memo1.Lines[i])>0 then Memo1.Lines.Delete(i);

добавлял в мемо
strings := Parse('name="', '"', Memo1.Lines.Text);
if strings <> nil then
begin
Memo2.Lines.AddStrings(strings);;
strings.Free;
s := Memo2.Text;
s:= StringReplace('site: "'+memo4.lines.Text[i]+'data="'+s,#13#10,'=&', [rfReplaceAll]);
if Length(s)>0 then
if s[Length(s)]='&' then s:= Copy(s, 1, Length(s)-1);
Memo3.Text := s;

Помогите буду очень признателен
mitiay вне форума Ответить с цитированием
Старый 08.09.2016, 12:22   #15
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Правильно иду?
Что с остальными двумя ссылками. Напиши их правильно
Изображения
Тип файла: png Untitled-1.png (58.8 Кб, 75 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 08.09.2016, 12:55   #16
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Да там форма входа
Параметры
name="n"
name="p"
name="mem"
mitiay вне форума Ответить с цитированием
Старый 08.09.2016, 13:29   #17
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

По порядку.
1. Из трёх представленных ссылок, только одна рабочая. Это специально так?
2. Твоя функция парсинга универсальна для всех сайтов, которые будут в Memo?
3. Если функция универсальна, то скинь в файле html-код страницы, которую ты парсишь. Не могу до неё добраться xD
Shouldercannon вне форума Ответить с цитированием
Старый 08.09.2016, 14:01   #18
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Код:
<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="Generator" content="JohnCMS, http://johncms.com" />
<meta name="keywords" content="MobiMeet.kz - Знакомства, Общение, Загрузки, Портал, и много тут у нас" />
<meta name="description" content="mobiMeet.kz - Развлекательный Портал" />
<link rel="stylesheet" href="http://mobimeet.kz/theme/green/style.css" type="text/css" />
<link rel="shortcut icon" href="http://mobimeet.kz/favicon.ico" />
<link rel="alternate" type="application/rss+xml" title="RSS | Новости ресурса" href="http://mobimeet.kz/rss/rss.php" />
<title>Развлекательный Портал</title>
</head><body><div class="logo"><a href="/" ><img src="/theme/green/images/logo.gif"  /></a><br/>Развлекательный Портал</div><div class="head"><a href="/" class="home"><img src="http://mobimeet.kz/theme/green/images/home.png" alt="home" /></a><a href="http://mobimeet.kz/login.php"  class="mail"> <img src="http://mobimeet.kz/theme/green/images/login.png" alt="login" /></a><a href="http://mobimeet.kz/registration.php"  class="profile"> <img src="http://mobimeet.kz/theme/green/images/reg.png" alt="reg" /></a><a href="http://mobimeet.kz/mobimeetkz.php"  class="exit"> <img src="http://mobimeet.kz/theme/green/images/info.png" alt="reg" /></a><div style="clear:both"> </div></div> <div class="phdr"><center> <a href="http://mobimeet.kz/users/index.php?act=online">Онлайн: 0 / 9</a></center></div><div class="news"><script charset="windows-1251" type="text/javascript">(function(e){var t="DIV_DA_"+e+"_"+parseInt(Math.random()*1e3);document.write('<div id="'+t+'" class="da-block da-block-'+e+'"></div>');if("undefined"===typeof loaded_blocks_da){loaded_blocks_da=[];function n(){var e=loaded_blocks_da.shift();var t=e.adp_id;var r=e.div;var i=document.createElement("script");i.type="text/javascript";i.async=true;i.charset="windows-1251";i.src="//code.directadvert.ru/show.cgi?async=1&adp="+t+"&div="+r+"&t="+Math.random();var s=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0];s.appendChild(i);var o=setInterval(function(){if(document.getElementById(r).innerHTML&&loaded_blocks_da.length){n();clearInterval(o)}},50)}setTimeout(n)}loaded_blocks_da.push({adp_id:e,div:t})})(166175)</script></div>

<div class="phdr"><b>Вход</b></div><div class="menu">
         <form action="login.php" method="post"><p><img src="../theme/green/images/iUser.png" alt=""/> <input type="text" name="n" value="" maxlength="20"/><br/><img src="../theme/green/images/iLock.png" alt=""/> <input type="password" name="p" maxlength="20"/></p><p><input type="checkbox" name="mem" value="1" checked="checked"/>Не выходить из системы</p><p><input type="submit" value="Вход"/></p></form></div><div class="menu"><a href="registration.php"><span class="green">+ Создать профиль</span></a><br/><li><a href="users/skl.php?continue"><span class="red"> Забыли пароль?</span></a></li></div> 
<script type="text/javascript">
teasernet_blockid = 656109;
teasernet_padid = 240274;
</script>
<script type="text/javascript" src="http://hiopdi.com/c0g800/b749a519c9d5d30.js"></script>
</div><div class="footer"><img src="/images/mainmenu/mobimeet.png" alt=" "/><a href="http://mobimeet.kz">На главную</a><span class="on"><a href="http://mobimeet.kz/users/index.php?act=online">Онлайн: 0 / 9</a></span></div> <div class="menu"><div style="text-align:light"><!-- Rating@Mail.ru counter -->
<script type="text/javascript">
var _tmr = _tmr || [];
_tmr.push({id: "2658849", type: "pageView", start: (new Date()).getTime()});
(function (d, w, id) {
  if (d.getElementById(id)) return;
  var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id;
  ts.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//top-fwz1.mail.ru/js/code.js";
  var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);};
  if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); }
})(document, window, "topmailru-code");
</script><noscript><div style="position:absolute;left:-10000px;">
<img src="//top-fwz1.mail.ru/counter?id=2658849;js=na" style="border:0;" height="1" width="1" alt="Рейтинг@Mail.ru" />
</div></noscript>
<!-- //Rating@Mail.ru counter -->
<!-- Rating@Mail.ru logo -->
<a href="http://top.mail.ru/jump?from=2658849">
<img src="//top-fwz1.mail.ru/counter?id=2658849;t=363;l=1" 
style="border:0;" height="18" width="88" alt="Рейтинг@Mail.ru" /></a>
<!-- //Rating@Mail.ru logo --><script charset="windows-1251" type="text/javascript">(function(e){var t="DIV_DA_"+e+"_"+parseInt(Math.random()*1e3);document.write('<div id="'+t+'" class="da-block da-block-'+e+'"></div>');if("undefined"===typeof loaded_blocks_da){loaded_blocks_da=[];function n(){var e=loaded_blocks_da.shift();var t=e.adp_id;var r=e.div;var i=document.createElement("script");i.type="text/javascript";i.async=true;i.charset="windows-1251";i.src="//code.directadvert.ru/show.cgi?async=1&adp="+t+"&div="+r+"&t="+Math.random();var s=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0];s.appendChild(i);var o=setInterval(function(){if(document.getElementById(r).innerHTML&&loaded_blocks_da.length){n();clearInterval(o)}},50)}setTimeout(n)}loaded_blocks_da.push({adp_id:e,div:t})})(242266)</script></div></div></body></html>
Вот сам код страницы

Как видишь пост параметры находятся в теге name=,но так же есть не подходящий нам тег name а мименно <meta name=

Что я делал
грузил код в мемо s:=idhttp1.Get(memo4.Lines[i]);
Удалял не нужные нам параметры if Pos('<meta name="', Memo1.Lines[i])>0 then Memo1.Lines.Delete(i); а именно <meta name=
и добавлял в мемо результат
strings := Parse('name="', '"', Memo1.Lines.Text);
if strings <> nil then
begin
Memo2.Lines.AddStrings(strings);;
strings.Free;
s := Memo2.Text;
s:= StringReplace('site: "'+memo4.lines.Text[i]+'data="'+s,#13#10,'=&', [rfReplaceAll]);
if Length(s)>0 then
if s[Length(s)]='&' then s:= Copy(s, 1, Length(s)-1);
Memo3.Text := s;


Параметры у всех одинаковы
mitiay вне форума Ответить с цитированием
Старый 08.09.2016, 14:15   #19
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Вернее параметр name= на всех сайтах одинаковый
mitiay вне форума Ответить с цитированием
Старый 08.09.2016, 14:41   #20
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

делал исходя из сорца страницы
Вложения
Тип файла: zip Pars.zip (913.0 Кб, 6 просмотров)
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдать сообщение, если элемент не найден в БД leobrn Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 18.12.2013 07:13
IdFTP1.Put если файл не найден ? bymyny Общие вопросы Delphi 2 07.09.2010 13:11
Инициализация закрытия программы, если не был найден файл? Vohakisa Помощь студентам 2 30.05.2010 10:23
RichEdit1 если текст найден надо чтоб он выделился в синий цвет xGroupers Общие вопросы Delphi 7 30.03.2008 13:56