Тыкать длительное время на несколько кнопок в опере тупо. Известен набор ссылок которые нужно последовательно открыть броузером, сохранить в виде текстового файла, обработать программой на паскале. Нет ли под вин броузера умеющего по командам из командной строки открыть страницу и сохранить под определённым именем текстовик. После чего или закрыться или выполнить новый набор команд.
FreeMan
4.10.2007 2:54
мозилу качай. там вроде есть плаг, который поддерживает подобные скрипты.. а вобще коль ты так любешь поскаль, то в его старшем брате,в делфе, довольно крутой набор мегокомпонентов, для которых по ссылком походить ничего не стоит...
SKVOZNJAK
4.10.2007 15:15
Вот на дельфи не тянет, во первых, неизвестно как нужная страница будет отображаться в собранном из его компонентов броузере. А во вторых, не хочется углубляться сверх необходимости в вин В третьих, уже есть работающий прототип проги. Если частично его доработать, то пока нет смысла ради небольшого улучшения переделывать всё заново. Склепал под виндой, чуть зрение не посадил разглядывая мелкие буквочки.
var Q7,W7: FILE; Q3,W3,E3:BYTE; MAS1:ARRAY[1..500000] OF BYTE; MAS2:ARRAY[1..500000] OF BYTE;
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);
READ(Q3); CASE Q3 OF 1: GOTO 1; 0: GOTO 100; END; WRITELN('‚‚…„рЌ Ќ…‚…ђЌ›‰ ЏЂђЂЊ…’ђ'); GOTO 2;
99: WRITELN('NACALOT2=',NACALOT2);
100: CLOSE(W7);
end.
Как видно из кода, это прога не просто так пилит файлы, она книги пишет Фентези с фантастикой и прочее, что в броузере читать ломово. Нужно лишь чтобы в обрабатываемых текстовиках присутствовало 2 строки типа
Есть идея сделать полуавтомат: прога раз в секунду ищет файл, если находит, обрабатывает, стирает, повторяет цикл снова. А в это время пользователь в опере сохраняет текстовые файлы с одним и тем же именем на рабочий стол Естесственно, всё это чисто в ознакомительных целях.
xds
4.10.2007 19:37
Вообще для таких целей Перл в самый раз
SKVOZNJAK
4.10.2007 20:51
Наверно это так, но для этого нужно затратить время и силы. Вначале до ассемблера надо добраться В описанном выше режиме бот уже работает. Как говорится, техника на грани фантастики: нажал на кнопку и спина в мыле
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);
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
5.10.2007 21:44
Листинг ниасилил. Но чтото мне подсказывает, что нужно элементарно сформировать http request типа get и сказать его целевому серверу в 80й порт. response'ом будет требуемая html-страничка.
FreeMan
6.10.2007 0:04
hardcase, +1. это провельный патход. ХДС, ну или пэхопэ
xds
6.10.2007 7:54
Еще вариант: 1. Список ссылок -> файл; 2. wget -i <этот файл>; 3. Обработать полученные документы программой на Паскале.
не грузится. Но даже если с дополнительными опциями и загрузится, от сохранения в формате html толку пшик. Страница перенасыщена скриптами и даже от смены стиля текст насыщается грамматическими ошибками. Сохранять нужно в текстовом формате, а таких опций в утилите не нашёл. 21 страницу не так долго сохранить в мозиле, чуть больше тыканья мышью в опере. Не конкурирует пока такая механизация с ручным трудом Вот если б можно было как нибудь сохранять текущую страницу на рабочем столе в формате текстового файла под именем 1.txt двумя кликами мышки Вечно разработчики не додумываются до таких простых и полезных функций
hardcase
11.10.2007 2:35
Цитата(SKVOZNJAK @ 10.10.2007 11:22)
от сохранения в формате html толку пшик. Страница перенасыщена скриптами
Ну, можно извратиться и написать xslt конвертер (используется для преобразования xml файлов и строгих html) который грохнет <script> </script> теги, <img/> и прочие ненужные, на вскидку, он займет строк 20-30. Кроме того, для процедурных языков есть регулярные выражения, с которыми воообще можно творить чудеса.
SKVOZNJAK
11.10.2007 15:34
А толку? Это теоретические методы плохо совмещаемые с существующими реалиями. Тот кто шаблон таких страниц разрабатывал мыслил симметрично и о таких мелочах позаботился. Попробуй в броузере зайти по последней ссылке и сохрани страницу в html А затем просмотри результат блокнотом. А вот в текстовом формате опера делает практически скриншот того что есть на экране. С этим уже можно работать. Составлять файл со списком адресов долго. Это имееет смысл если следущий адрес нельзя вычислить. В противном случае можно задать адреса только первой и последней страницы, они отличаются всего одной цифрой. Оставшиеся адреса прога вычислит самостоятельно. Последовательность работы такая: 1 Получить данные в командной строке. 2 Вычислить адрес нужной страницы. 3 Дать задание броузеру или утилите в командной строке. 4 Обработать и удалить текстовой файл. 5 При необходимости гото 2; 6 Закрытие открытого файла и выход.
Atos
11.10.2007 21:21
[немного оффтоп] Вот ещё очень простой способ сохранять сохранять файл по ссылке для Delphi (немного модифицированный мной пример из DRKB). просто сохранять, не в текстовом виде
Только проблема в том, что браузер строит эту страничку скриптом - в некоторый момент происходит постбек - подргрузка контента (Чистовика), если догове время посидеть под JavaScript отладчиком (например в FireFox2), можно понять, как строится тот постбек и элементарно вычислить, откуда грузятится контент - т.е. хакнут защиту, сейчас уже поздно заниматься сим делом, потерплю до завтра....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.