|
Вопрос # 6 208/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
подскажите пожалуйста как через компонент webbrowser вырезать часть кода страницы. А именно вырезать каптчу. через браузер Опера нажимаю проинспектировать элемент и мне предоставляется код выбранного элемента. Но код этого элемента отсутствует в обычном коде страницы. Вот и хочу узнать как найти то, что находит через оперу и удалить этот элемент - каптчу с помощью функций delphi
 |
Вопрос задал: skew (статус: Посетитель)
Вопрос отправлен: 25 июня 2012, 14:44
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 36; последнее сообщение — 27 июня 2012, 08:16; участников в обсуждении: 2.
Страницы: [1] [2] [Следующая »]
|
min@y™ (статус: Доктор наук), 25 июня 2012, 15:12 [#1]:
А как эта капча выглядит в коде страницы?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
25 июня 2012, 15:27: Вопрос перемещён из тематического раздела Delphi » Работа с сетями и протоколами в раздел Delphi » Работа с компонентами и библиотеками модератором DNK Причина: Цитирую: "...как через компонент webbrowser..."
|
skew (статус: Посетитель), 25 июня 2012, 15:48 [#2]:
если полностью то вот:
<div class="" id="captchaLevel">
<table border="0" cellspacing="0" cellpadding="0" class="captchaTable" dir="ltr" id="ask_captcha_content">
<tbody>
<tr>
<td rowspan="2" dir="ltr">
<img src="http://ask.fm/simple_captcha/simple_captcha?im_captcha_factory=google_transparent&simple_captcha_key=e0ca670bf82ba58e06fcc91a3774eee771281211&time=1340624766" class="image-captcha" alt="" width="100" height="40"/>
</td>
<td>
<input class="field-captcha" id="captcha" maxlength="6" name="captcha" type="text"/>
<input id="captcha_key" name="captcha_key" type="hidden" value="e0ca670bf82ba58e06fcc91a3774eee771281211"/>
</td>
<td dir="ltr">
<a class="captchaRefresh" href="#" onclick="Captcha.regenerate(this, 'ask', '#ask_captcha_content'); return false;">
<img alt="" class="border-none" height="16" id="captcha_image_reload_icon" src="/images/icons/captcha-reload.png?1340376900" title="Перезагрузить" width="16"/>
</a>
</td>
</tr>
<tr>
</tbody>
</table>
</div>
если же в свернутом виде то вот:
<div class="" id="captchaLevel">
вот если удаляю эту строку то каптча полностью исчезает и не требует запроса на отправку сообщения
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 16:15 [#3]:
Цитата (skew):
вот если удаляю эту строку то каптча полностью исчезает и не требует запроса на отправку сообщения
Ну и в чём проблема-то? Здесь не нужен TWebBrowser. Скачай страницу вручную (это просто временный файл, который сервер формирует), распотроши его в памяти, выкинь всё лишнее и используй дальше, как тебе нужно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 16:17 [#4]:
легко сказано. можно чуть разъяснить. я с браузером работаю не так давно и научился только изменять код страницы и пользоваться элементами страницы. но с серверными файлами не работал еще
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 16:27 [#5]:
Цитата (skew):
я с браузером работаю не так давно
А я с ним ваще не работал никогда.
Цитата (skew):
но с серверными файлами не работал еще
Ты меня не так понял. Сервер формирует страницу динамически, по запросу и сразу отправляет её клиенту. А клиент её получает и использует на своё усмотрение.
Вот тебе кусок кода из моей старой проги, проанализируй его:
procedure THtmlDownloader.Execute;
var
Buffer: array of Char;
Success: Boolean;
Readed, ReadedTotal: Cardinal;
begin
FStatus:= 'Клянчу страницу ' + FURL + '...';
DoOnStatus(False);
FhFile:= InternetOpenUrl(FhInet,
PChar(FURL),
nil,
0,
INTERNET_FLAG_NO_COOKIES or INTERNET_FLAG_NO_CACHE_WRITE,
0);
if FhFile = nil
then begin
FErrorCode:= deInternetProblem;
Exit;
end;
SetLength(Buffer, FBufferSize);
FStatus:= 'Заливаю страницу ' + FURL + '...';
DoOnStatus(False);
ReadedTotal:= 0;
FTimer.Enabled:= True;
repeat
Success:= InternetReadFile(FhFile, @Buffer[0], Length(Buffer), Readed);
if Success
then FStream.Write(Buffer[0], Readed);
Inc(ReadedTotal, Readed);
FStatus:= 'Заливаю страницу ' + FURL + ' - [' + FileSize2Str(ReadedTotal) + ']';
FDeltaSize:= Readed;
DoOnStatus(False);
until (Readed = 0) or not Success or MainForm.FCancelled;
FTimer.Enabled:= False;
if not Success
then FErrorCode:= deInternetProblem;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 16:41 [#6]:
ну тут все понятно/ я не совсем пойму откуда мне вырывать эту часть. попробую сделать через save документа
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 16:50 [#7]:
Цитата (skew):
попробую сделать через save документа
Значит, я код зря приводил... Ну ладно, пойду куплю картошки и лука. Пожарю. А то жрать охота...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 17:11 [#8]:
приятного аппетита..
все получилось программным путем - выявить эти скрытые данные. но теперь как удалить нужную часть и после сохранить и использовать готовую форму. вот код которым получаю код страницы.
procedure TForm1.btn1Click(Sender: TObject);
var
Doc:IHTMLDocument2;
S:string;
begin
Doc:= Wb1.Document as IHTMLDocument2;
s:=doc.body.innerHTML;
Memo1.Text:=s;
end;
|
|
skew (статус: Посетитель), 25 июня 2012, 17:38 [#9]:
кстати можешь подсказать? а то я че то нублю. как вырезать - удалить часть текста из середины например
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 17:53 [#10]:
Цитата (skew):
вот код которым получаю код страницы.
А зачем тут Memo?
Цитата (skew):
удалить часть текста из середины например
Есть процедура Delete(), есть функция Copy(). Выбирай.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 17:55 [#11]:
сейчас мне нужна delete хотя разница в них только функцией. в мемо я просто вывел код полученный от страницы. чтобы убедиться, что это то что мне нужно
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 18:07 [#12]:
Цитата (skew):
сейчас мне нужна delete
Ну так воспользуйся. Что мешает?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 18:24 [#13]:
я немного не понимаю как из середины вырезать от определенного слова и до определенного слова
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 18:26 [#14]:
Цитата (skew):
я немного не понимаю как из середины вырезать от определенного слова и до определенного слова
А почему?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 18:29 [#15]:
Цитата (skew):
я немного не понимаю как
Особенно меня озадачивает слово "немного". Это, блин, как?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 18:31 [#16]:
замени синонимом не совсем. я знаю как вырезать от начало строки или от заданного числом места и кол-во копируемых символов, а как из середины хз
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 18:34 [#17]:
Цитата (skew):
замени синонимом не совсем я знаю как вырезать от начало строки и определенное кол-во символов
казнить нельзя помиловать
Цитата (skew):
а как из середины хз
посмотри справку по процедуре Delete() и функции Pos().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 18:36 [#18]:
у меня справка не работает. пишет что якобы не установлен microsoft document explorer
|
|
min@y™ (статус: Доктор наук), 25 июня 2012, 18:41 [#19]:
Цитата (skew):
у меня справка не работает. пишет что якобы не установлен microsoft document explorer
Хорошо. Это достойный аргумент.
У меня справка работает.
Removes a substring from a string.
Unit
System
Category
string handling routines
Delphi syntax:
procedure Delete(var S: string; Index, Count:Integer);
Description
In Delphi code, Delete removes a substring of Count characters from string S starting with S[Index]. S is a string-type variable. Index and Count are integer-type expressions.
If index is larger than the length of the string or less than 1, no characters are deleted.
If count specifies more characters than remain starting at the index, Delete removes the rest of the string. If count is less than or equal to 0, no characters are deleted.
-----------------------------
Returns the index value of the first character in a specified substring that occurs in a given string.
Unit
System
Category
string handling routines
Delphi syntax:
function Pos(Substr: string; S: string): Integer;
Description
In Delphi, Pos searches for a substring, Substr, in a string, S. Substr and S are string-type expressions.
Pos searches for Substr within S and returns an integer value that is the index of the first character of Substr within S. Pos is case-sensitive. If Substr is not found, Pos returns zero.
The PosEx function is similar to Pos, but provides additional features and can be used in C++ code.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 25 июня 2012, 18:50 [#20]:
тут так же говорят как удалить от нужного место и сколько символов. но как удалить от символа до символа не говорят
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|