![]() |
![]() ![]() |
![]() |
SKVOZNJAK |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тыкать длительное время на несколько кнопок в опере тупо. Известен набор ссылок которые нужно последовательно открыть броузером, сохранить в виде текстового файла, обработать программой на паскале. Нет ли под вин броузера умеющего по командам из командной строки открыть страницу и сохранить под определённым именем текстовик. После чего или закрыться или выполнить новый набор команд.
|
FreeMan |
![]()
Сообщение
#2
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
мозилу качай. там вроде есть плаг, который поддерживает подобные скрипты.. а вобще коль ты так любешь поскаль, то в его старшем брате,в делфе, довольно крутой набор мегокомпонентов, для которых по ссылком походить ничего не стоит...
-------------------- бб
|
SKVOZNJAK |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот на дельфи не тянет, во первых, неизвестно как нужная страница будет отображаться в собранном из его компонентов броузере. А во вторых, не хочется углубляться сверх необходимости в вин
![]()
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.
Как видно из кода, это прога не просто так пилит файлы, она книги пишет ![]() <<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 >>>
Есть идея сделать полуавтомат: прога раз в секунду ищет файл, если находит, обрабатывает, стирает, повторяет цикл снова. А в это время пользователь в опере сохраняет текстовые файлы с одним и тем же именем на рабочий стол ![]() |
xds |
![]()
Сообщение
#4
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вообще для таких целей Перл в самый раз
![]() -------------------- The idiots are winning.
|
SKVOZNJAK |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Наверно это так, но для этого нужно затратить время и силы. Вначале до ассемблера надо добраться
![]() ![]() 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.
|
hardcase |
![]()
Сообщение
#6
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Листинг ниасилил.
Но чтото мне подсказывает, что нужно элементарно сформировать http request типа get и сказать его целевому серверу в 80й порт. response'ом будет требуемая html-страничка. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
FreeMan |
![]()
Сообщение
#7
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
hardcase, +1. это провельный патход.
ХДС, ну или пэхопэ -------------------- бб
|
xds |
![]()
Сообщение
#8
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Еще вариант:
1. Список ссылок -> файл; 2. wget -i <этот файл>; 3. Обработать полученные документы программой на Паскале. GNU Wget/Win32: http://users.ugent.be/~bpuype/wget/ Сообщение отредактировано: xds - 6.10.2007 4:00 -------------------- The idiots are winning.
|
SKVOZNJAK |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не получится.
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 страницу не так долго сохранить в мозиле, чуть больше тыканья мышью в опере. Не конкурирует пока такая механизация с ручным трудом ![]() ![]() ![]() |
hardcase |
![]()
Сообщение
#10
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
от сохранения в формате html толку пшик. Страница перенасыщена скриптами Ну, можно извратиться и написать xslt конвертер (используется для преобразования xml файлов и строгих html) который грохнет <script> </script> теги, <img/> и прочие ненужные, на вскидку, он займет строк 20-30. Кроме того, для процедурных языков есть регулярные выражения, с которыми воообще можно творить чудеса. Сообщение отредактировано: hardcase - 10.10.2007 22:41 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
SKVOZNJAK |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
А толку? Это теоретические методы плохо совмещаемые с существующими реалиями. Тот кто шаблон таких страниц разрабатывал мыслил симметрично и о таких мелочах позаботился. Попробуй в броузере зайти по последней ссылке и сохрани страницу в html А затем просмотри результат блокнотом. А вот в текстовом формате опера делает практически скриншот того что есть на экране. С этим уже можно работать.
Составлять файл со списком адресов долго. Это имееет смысл если следущий адрес нельзя вычислить. В противном случае можно задать адреса только первой и последней страницы, они отличаются всего одной цифрой. Оставшиеся адреса прога вычислит самостоятельно. Последовательность работы такая: 1 Получить данные в командной строке. 2 Вычислить адрес нужной страницы. 3 Дать задание броузеру или утилите в командной строке. 4 Обработать и удалить текстовой файл. 5 При необходимости гото 2; 6 Закрытие открытого файла и выход. |
Atos |
![]()
Сообщение
#12
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
[немного оффтоп]
Вот ещё очень простой способ сохранять сохранять файл по ссылке для Delphi (немного модифицированный мной пример из DRKB). просто сохранять, не в текстовом виде Сообщение отредактировано: Atos - 12.10.2007 12:08 Прикрепленные файлы ![]() |
hardcase |
![]()
Сообщение
#13
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Последняя ссылка конечно интересна.
Код "http://www.litportal.ru/genre32/author654/read/page/1/book19712.html" Только проблема в том, что браузер строит эту страничку скриптом - в некоторый момент происходит постбек - подргрузка контента (Чистовика), если догове время посидеть под JavaScript отладчиком (например в FireFox2), можно понять, как строится тот постбек и элементарно вычислить, откуда грузятится контент - т.е. хакнут защиту, сейчас уже поздно заниматься сим делом, потерплю до завтра.... Сообщение отредактировано: hardcase - 12.10.2007 1:26 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
![]() ![]() |
![]() |
Текстовая версия | 22.07.2025 22:35 |