IPB
ЛогинПароль:

> Броузер бот
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Тыкать длительное время на несколько кнопок в опере тупо. Известен набор ссылок которые нужно последовательно открыть броузером, сохранить в виде текстового файла, обработать программой на паскале. Нет ли под вин броузера умеющего по командам из командной строки открыть страницу и сохранить под определённым именем текстовик. После чего или закрыться или выполнить новый набор команд.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 12)
сообщение
Сообщение #2


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


мозилу качай. там вроде есть плаг, который поддерживает подобные скрипты.. а вобще коль ты так любешь поскаль, то в его старшем брате,в делфе, довольно крутой набор мегокомпонентов, для которых по ссылком походить ничего не стоит...


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Вот на дельфи не тянет, во первых, неизвестно как нужная страница будет отображаться в собранном из его компонентов броузере. А во вторых, не хочется углубляться сверх необходимости в вин smile.gif В третьих, уже есть работающий прототип проги. Если частично его доработать, то пока нет смысла ради небольшого улучшения переделывать всё заново. Склепал под виндой, чуть зрение не посадил разглядывая мелкие буквочки.

var
Q7,W7: FILE;
Q3,W3,E3:BYTE;
MAS1:ARRAY[1..500000] OF BYTE;
MAS2:ARRAY[1..500000] OF BYTE;

Q2,W2,NACALOT2,KONCELOT2,DLINATEKSTA : LONGINT;
LABEL 1,2,3,4,5,6,99,100;


FUNCTION MASKA1(QQ8: WORD) : WORD;
BEGIN
CASE QQ8 OF
48..57,32: QQ8:=256;
END;
MASKA1:=QQ8;
END;


begin
ASSIGN(W7,ParamStr(2));
reset(W7,1);
WRITELN('');

1:
ASSIGN(Q7,ParamStr(1));
writeln('—?’Ђ…’‘џ ’…Љ‘’Ћ‚Ћ‰ ”Ђ‰‹ ',ParamStr(1));
reset(Q7,1);

Q2:=FILESIZE(Q7);
BLOCKREAD(Q7,MAS1,Q2);
KONCELOT2:=0;
FOR W2:=1 TO Q2 DO IF MAS1[W2]=60 THEN BEGIN
FOR Q3:=1 TO 2 DO IF (MAS1[W2+Q3])<>60 THEN GOTO 4;
FOR W3:=1 TO 150 DO CASE MASKA1(MAS1[W2+Q3+W3]) OF
{ 256:}
62: BEGIN
FOR E3:=1 TO 2 DO IF (MAS1[W2+Q3+W3+E3])<>62 THEN GOTO 4;
NACALOT2:=W2+Q3+W3+E3+1;
GOTO 3;
END;
1..61,63..255,257..1000: GOTO 4;
END;

4:
END;

GOTO 5;
3:
FOR W2:=NACALOT2+1 TO Q2 DO IF MAS1[W2]=60 THEN BEGIN
FOR Q3:=1 TO 2 DO IF (MAS1[W2+Q3])<>60 THEN GOTO 6;
FOR W3:=1 TO 150 DO CASE MASKA1(MAS1[W2+Q3+W3]) OF
{ 256:}
62: BEGIN
FOR E3:=1 TO 2 DO IF (MAS1[W2+Q3+W3+E3])<>62 THEN GOTO 6;
KONCELOT2:=W2+Q3+W3+E3;
GOTO 5;
END;
1..61,63..255,257..1000: GOTO 6;
END;

6:
END;



5:
CLOSE(Q7);
IF KONCELOT2=0 THEN GOTO 100;
DLINATEKSTA:=KONCELOT2-NACALOT2+1;
FOR W2:=1 TO DLINATEKSTA DO MAS2[W2]:=MAS1[NACALOT2+W2-1];
Q2:=FILESIZE(W7);
SEEK(W7,Q2);
BLOCKWRITE(W7,MAS2,DLINATEKSTA);



WRITELN('„ЋЃЂ‚‹…Ќ ”ђЂѓЊ…Ќ’ ’…Љ‘’Ђ');
2:
WRITELN('‚‚…„? 1 „‹џ „ЋЃЂ‚‹…Ќ?џ ‘‹…„“ћ™…ѓЋ ”ђЂѓЊ…Ќ’Ђ ?‹? 0 „‹џ ‚›•Ћ„Ђ');

READ(Q3);
CASE Q3 OF
1: GOTO 1;
0: GOTO 100;
END;
WRITELN('‚‚…„рЌ Ќ…‚…ђЌ›‰ ЏЂђЂЊ…’ђ');
GOTO 2;

99:
WRITELN('NACALOT2=',NACALOT2);

100:
CLOSE(W7);

end.


Как видно из кода, это прога не просто так пилит файлы, она книги пишет lol.gif Фентези с фантастикой и прочее, что в броузере читать ломово. Нужно лишь чтобы в обрабатываемых текстовиках присутствовало 2 строки типа
<<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 >>> 

Есть идея сделать полуавтомат: прога раз в секунду ищет файл, если находит, обрабатывает, стирает, повторяет цикл снова. А в это время пользователь в опере сохраняет текстовые файлы с одним и тем же именем на рабочий стол smile.gif Естесственно, всё это чисто в ознакомительных целях.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Вообще для таких целей Перл в самый раз smile.gif


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Наверно это так, но для этого нужно затратить время и силы. Вначале до ассемблера надо добраться wacko.gif В описанном выше режиме бот уже работает. Как говорится, техника на грани фантастики: нажал на кнопку и спина в мыле smile.gif
USES CRT,DOS;
var
Q7,W7: FILE;
Q3,W3,E3,R3:BYTE;
MAS1:ARRAY[1..500000] OF BYTE;
MAS2:ARRAY[1..500000] OF BYTE;
S: SearchRec;
Q2,W2,NACALOT2,KONCELOT2,DLINATEKSTA : LONGINT;
LABEL 1,2,3,4,5,6,7,99,100;


FUNCTION MASKA1(QQ8: WORD) : WORD;
BEGIN
CASE QQ8 OF
48..57,32: QQ8:=256;
END;
MASKA1:=QQ8;
END;


begin

ASSIGN(W7,ParamStr(2));
reset(W7,1);
WRITELN('');
DELAY(50);
FOR Q3:=1 TO 100 DO IF KEYPRESSED=TRUE THEN READKEY;
WRITELN('0 - ‚›•Ћ„');

7:
DELAY(1000);
FindFirst(ParamStr(1),AnyFile,S);
FOR Q3:=1 TO 50 DO IF KEYPRESSED = TRUE THEN IF ORD(READKEY)=48 THEN GOTO 100;
IF DosError<>0 THEN GOTO 7;
DELAY(100);


1:
ASSIGN(Q7,ParamStr(1));
writeln('—?’Ђ…’‘џ ’…Љ‘’Ћ‚Ћ‰ ”Ђ‰‹ ',ParamStr(1));
reset(Q7,1);

Q2:=FILESIZE(Q7);
BLOCKREAD(Q7,MAS1,Q2);
CLOSE(Q7);
erase(Q7);
KONCELOT2:=0;
FOR W2:=1 TO Q2 DO IF MAS1[W2]=60 THEN BEGIN
FOR Q3:=1 TO 2 DO IF (MAS1[W2+Q3])<>60 THEN GOTO 4;
FOR W3:=1 TO 150 DO CASE MASKA1(MAS1[W2+Q3+W3]) OF
{ 256:}
62: BEGIN
FOR E3:=1 TO 2 DO IF (MAS1[W2+Q3+W3+E3])<>62 THEN GOTO 4;
NACALOT2:=W2+Q3+W3+E3+1;
GOTO 3;
END;
1..61,63..255,257..1000: GOTO 4;
END;

4:
END;

GOTO 5;
3:
FOR W2:=NACALOT2+1 TO Q2 DO IF MAS1[W2]=60 THEN BEGIN
FOR Q3:=1 TO 2 DO IF (MAS1[W2+Q3])<>60 THEN GOTO 6;
FOR W3:=1 TO 150 DO CASE MASKA1(MAS1[W2+Q3+W3]) OF
{ 256:}
62: BEGIN
FOR E3:=1 TO 2 DO IF (MAS1[W2+Q3+W3+E3])<>62 THEN GOTO 6;
KONCELOT2:=W2+Q3+W3+E3;
GOTO 5;
END;
1..61,63..255,257..1000: GOTO 6;
END;

6:
END;



5:
IF KONCELOT2=0 THEN GOTO 100;
DLINATEKSTA:=KONCELOT2-NACALOT2+1;
FOR W2:=1 TO DLINATEKSTA DO MAS2[W2]:=MAS1[NACALOT2+W2-1];
Q2:=FILESIZE(W7);
SEEK(W7,Q2);
BLOCKWRITE(W7,MAS2,DLINATEKSTA);



WRITELN('„ЋЃЂ‚‹…Ќ ”ђЂѓЊ…Ќ’ ’…Љ‘’Ђ');
2:
WRITELN('0 - ‚›•Ћ„');
DELAY(300);
FOR R3:=1 TO 100 DO BEGIN
IF KEYPRESSED = TRUE THEN Q3:=ORD(READKEY);
CASE Q3 OF
0: GOTO 100;
END;
END;

GOTO 7;

99:

100:
CLOSE(W7);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Листинг ниасилил.
Но чтото мне подсказывает, что нужно элементарно сформировать http request типа get и сказать его целевому серверу в 80й порт. response'ом будет требуемая html-страничка.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


hardcase, +1. это провельный патход.
ХДС, ну или пэхопэ


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Еще вариант:
1. Список ссылок -> файл;
2. wget -i <этот файл>;
3. Обработать полученные документы программой на Паскале.

GNU Wget/Win32: http://users.ugent.be/~bpuype/wget/

Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Не получится.
wget "mail.ru"

работает
wget "http://top.rbc.ru/incidents/10/10/2007/121992.shtml"

тоже работает. А вот самый интересный пример:
wget "http://www.litportal.ru/genre32/author654/read/page/1/book19712.html"

не грузится. Но даже если с дополнительными опциями и загрузится, от сохранения в формате html толку пшик. Страница перенасыщена скриптами и даже от смены стиля текст насыщается грамматическими ошибками. Сохранять нужно в текстовом формате, а таких опций в утилите не нашёл. 21 страницу не так долго сохранить в мозиле, чуть больше тыканья мышью в опере. Не конкурирует пока такая механизация с ручным трудом blink.gif Вот если б можно было как нибудь сохранять текущую страницу на рабочем столе в формате текстового файла под именем 1.txt двумя кликами мышки rolleyes.gif Вечно разработчики не додумываются до таких простых и полезных функций dry.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Цитата(SKVOZNJAK @ 10.10.2007 11:22) *
от сохранения в формате html толку пшик. Страница перенасыщена скриптами

Ну, можно извратиться и написать xslt конвертер (используется для преобразования xml файлов и строгих html) который грохнет <script> </script> теги, <img/> и прочие ненужные, на вскидку, он займет строк 20-30. Кроме того, для процедурных языков есть регулярные выражения, с которыми воообще можно творить чудеса.

Сообщение отредактировано: hardcase -


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


А толку? Это теоретические методы плохо совмещаемые с существующими реалиями. Тот кто шаблон таких страниц разрабатывал мыслил симметрично и о таких мелочах позаботился. Попробуй в броузере зайти по последней ссылке и сохрани страницу в html А затем просмотри результат блокнотом. А вот в текстовом формате опера делает практически скриншот того что есть на экране. С этим уже можно работать.
Составлять файл со списком адресов долго. Это имееет смысл если следущий адрес нельзя вычислить. В противном случае можно задать адреса только первой и последней страницы, они отличаются всего одной цифрой. Оставшиеся адреса прога вычислит самостоятельно. Последовательность работы такая:
1 Получить данные в командной строке.
2 Вычислить адрес нужной страницы.
3 Дать задание броузеру или утилите в командной строке.
4 Обработать и удалить текстовой файл.
5 При необходимости гото 2;
6 Закрытие открытого файла и выход.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


[немного оффтоп]
Вот ещё очень простой способ сохранять сохранять файл по ссылке для Delphi (немного модифицированный мной пример из DRKB). просто сохранять, не в текстовом виде

Сообщение отредактировано: Atos -


Прикрепленные файлы
Прикрепленный файл  Downloading.pas ( 1.58 килобайт ) Кол-во скачиваний: 343
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Последняя ссылка конечно интересна.
Код
"http://www.litportal.ru/genre32/author654/read/page/1/book19712.html"

Только проблема в том, что браузер строит эту страничку скриптом - в некоторый момент происходит постбек - подргрузка контента (Чистовика), если догове время посидеть под JavaScript отладчиком (например в FireFox2), можно понять, как строится тот постбек и элементарно вычислить, откуда грузятится контент - т.е. хакнут защиту, сейчас уже поздно заниматься сим делом, потерплю до завтра....

Сообщение отредактировано: hardcase -


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 17:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name