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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2012, 22:03   #1
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию Парсинг неизвестного значения

Делаю отправку новости на dle сайты, но проблема.
Но на большинстве сайтов нужно парсить значение.

Вот код:

Код:
var
LoginData, Response: TStrings;
str,s:string; n:integer;
begin
idhttp1.CookieManager:=idcookiemanager1;
LoginData := TStringList.Create;
Response := TStringList.Create;
try
LoginData.Add('title='+title.text);
LoginData.Add('catlist[]=3');
LoginData.Add('bbfont=0');
LoginData.Add('bbsize=0');
LoginData.Add('short_story='+brief.text);
LoginData.Add('full_story='+ful.Text);
LoginData.Add('tags=');
LoginData.Add('allow_comm=1');
LoginData.Add('allow_main=1');
LoginData.Add('approve=1');
LoginData.Add('allow_rating=1');
LoginData.Add('add=Отправить');
LoginData.Add('add=отправить');
LoginData.Add('mod=addnews');
Response.Text:=idhttp1.Post(site.text+'addnews.html',logindata);
Response.Text:=idhttp1.Post(site.text+'index.php?do=addnews',logindata);
except
end;
end;
вот примеры сайтов, на которых нужно парсить значение:
http://02-online.ru/
http://xtreme.ws/

логин YaModeratoR12
пароль YaModeratoR12

помогите пожалуйста
scroyler вне форума Ответить с цитированием
Старый 08.08.2012, 22:32   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
нужно парсить значение
Его мне в вашей голове найти? Или сами напишите ? А вообще есть овер9000 спец. софта для удобного постинга в блоги и CMS без использования браузера, посмотрите подерживает ли dle обмен XML RPC, если да.. вам и спец ПО писать не надо, таких валом. Гугл знает.

Последний раз редактировалось Человек_Борща; 08.08.2012 в 22:34.
Человек_Борща вне форума Ответить с цитированием
Старый 08.08.2012, 22:40   #3
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Его мне в вашей голове найти? Или сами напишите ? А вообще есть овер9000 спец. софта для удобного постинга в блоги и CMS без использования браузера, посмотрите подерживает ли dle обмен XML RPC, если да.. вам и спец ПО писать не надо, таких валом. Гугл знает.
Мне не нужен софт, я знаю, что его навалом, можно сказать мне для практики.

Вот оно значение, я бы сам спарсил значение,да значений которые начинаются на <input type="hidden" name= очень много и парсит не то
Код:
<input type="hidden" name="wxvckpth" value="136ff34515bb19271a93901ea49d08e0">
scroyler вне форума Ответить с цитированием
Старый 08.08.2012, 23:18   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

показывайте, как парсите. Эти hidden все однотипны. Парсить можно без проблемно.
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2012, 01:31   #5
Zoomer123
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 33
По умолчанию

Допустим по счету нужный токен у тебя 5-й. Используй цикл, постепенно удаляя первоидущие токены.
Zoomer123 вне форума Ответить с цитированием
Старый 09.08.2012, 08:19   #6
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Ну да...

Вот так парсю, 1 значение без проблем, а 2 почему то не парсит...
Код:
str:=idhttp1.Get(site.Text+'addnews.html');
n:=pos('<input type="hidden" name="mod" value="addnews" />',str)+length('<input type="hidden" name="mod" value="addnews" />');
stroka:= copy(str,n,posex('/>',str,n)-n);

str:=stroka;
n:=pos('<input type="hidden" name="',str)+length('<input type="hidden" name="');
edit1.Text:= copy(str,n,posex('" value="',str,n)-n);

str:=stroka;
n:=pos('value="',str)+length('value="');
edit2.Text:= copy(str,n,posex('"',str,n)-n);
что не так?
scroyler вне форума Ответить с цитированием
Старый 09.08.2012, 08:40   #7
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Ну сделал как то так, парсит то нормально, но почему то , не работает
что делать?

Код:
var
LoginData, Response: TStrings;
 str,s,stroka,hranilishe:string;n:integer;
begin
idhttp1.CookieManager:=idcookiemanager1;
LoginData := TStringList.Create;
Response := TStringList.Create;
try
//

str:=idhttp1.Get(site.Text+'addnews.html');
n:=pos('<input type="hidden" name="mod" value="addnews" />',str)+length('<input type="hidden" name="mod" value="addnews" />');
stroka:= copy(str,n,posex('/>',str,n)-n);
memo1.text:=copy(str,n,posex('/>',str,n)-n);

str:=stroka;
n:=pos('<input type="hidden" name="',str)+length('<input type="hidden" name="');
edit1.Text:= copy(str,n,posex('" value="',str,n)-n);

str:=memo1.text;
n:=pos('<input type="hidden" name="'+edit1.text+'" value="',str)+length('<input type="hidden" name="'+edit1.text+'" value="');
edit2.Text:= copy(str,n,posex('"',str,n)-n);

//
LoginData.Add('title='+title.text);
LoginData.Add('catlist[]=3');
LoginData.Add('bbfont=0');
LoginData.Add('bbsize=0');
LoginData.Add('short_story='+brief.text);
LoginData.Add('full_story='+ful.Text);
LoginData.Add('tags=');
LoginData.Add('allow_comm=1');
LoginData.Add('allow_main=1');
LoginData.Add('approve=1');
LoginData.Add('allow_rating=1');
LoginData.Add('add=Отправить');
LoginData.Add('add=îòïðàâèòü');
LoginData.Add('mod=addnews');
LoginData.Add(edit1.Text+'='+edit2.text);
Response.Text:=idhttp1.Post(site.text+'addnews.html',logindata);
Response.Text:=idhttp1.Post(site.text+'index.php?do=addnews',logindata);
except
end;
end;
scroyler вне форума Ответить с цитированием
Старый 10.08.2012, 14:33   #8
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

Код:
function GetSubStr(AInputStr, ABeginStr, AEndStr: String; AInclude: Boolean = False): String;
var
  s: String;
  sp, ep: Int64;
begin
  Result := '';
  if pos(ABeginStr, AInputStr) <> 0 then begin
    sp := pos(ABeginStr, AInputStr) + length(ABeginStr);
    s := copy(AInputStr, sp, length(AInputStr));
    ep := pos(AEndStr, s) - 1;
    if AInclude then
      Result := ABeginStr + copy(s, 1, ep) + AEndStr 
    else
      Result := copy(s, 1, ep);
  end;
end;
Использование:

Код:
var 
  pname,pval,s: String;
begin
  s := '<input type="hidden" name="wxvckpth" value="136ff34515bb19271a93901ea49d08e0">';
  // имя поля формы
  pname := GetSubStr(s, '<input type="hidden" name="', '"');
  // значение поля формы
  pval := GetSubStr(s, pname + 'value="', '"');
end;
Вариантов очень много, это не один из лучших
Usov вне форума Ответить с цитированием
Старый 10.08.2012, 16:18   #9
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Цитата:
Сообщение от Usov Посмотреть сообщение
Код:
function GetSubStr(AInputStr, ABeginStr, AEndStr: String; AInclude: Boolean = False): String;
var
  s: String;
  sp, ep: Int64;
begin
  Result := '';
  if pos(ABeginStr, AInputStr) <> 0 then begin
    sp := pos(ABeginStr, AInputStr) + length(ABeginStr);
    s := copy(AInputStr, sp, length(AInputStr));
    ep := pos(AEndStr, s) - 1;
    if AInclude then
      Result := ABeginStr + copy(s, 1, ep) + AEndStr 
    else
      Result := copy(s, 1, ep);
  end;
end;
Использование:

Код:
var 
  pname,pval,s: String;
begin
  s := '<input type="hidden" name="wxvckpth" value="136ff34515bb19271a93901ea49d08e0">';
  // имя поля формы
  pname := GetSubStr(s, '<input type="hidden" name="', '"');
  // значение поля формы
  pval := GetSubStr(s, pname + 'value="', '"');
end;
Вариантов очень много, это не один из лучших
спасибо, но результат такой же, не отправляет, может ошибка не в парсере?
scroyler вне форума Ответить с цитированием
Старый 12.08.2012, 18:18   #10
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

помогите пожалуйста
scroyler вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг значения DKENT Работа с сетью в Delphi 6 25.08.2011 13:46
Поиск неизвестного свойства функцией __set() romantik2011 PHP 1 04.08.2011 08:46
запрос из зараннее неизвестного колл - ва таблиц Valerra Помощь студентам 3 28.01.2009 11:02
Visual basic 6 - открытие заранее неизвестного файла byte916 Помощь студентам 5 06.10.2008 15:27
Таблица заранее неизвестного размера в Basic.net byte916 Помощь студентам 1 02.04.2008 02:38