Тыкать длительное время на несколько кнопок в опере тупо. Известен набор ссылок которые нужно последовательно открыть броузером, сохранить в виде текстового файла, обработать программой на паскале. Нет ли под вин броузера умеющего по командам из командной строки открыть страницу и сохранить под определённым именем текстовик. После чего или закрыться или выполнить новый набор команд.
мозилу качай. там вроде есть плаг, который поддерживает подобные скрипты.. а вобще коль ты так любешь поскаль, то в его старшем брате,в делфе, довольно крутой набор мегокомпонентов, для которых по ссылком походить ничего не стоит...
Вот на дельфи не тянет, во первых, неизвестно как нужная страница будет отображаться в собранном из его компонентов броузере. А во вторых, не хочется углубляться сверх необходимости в вин В третьих, уже есть работающий прототип проги. Если частично его доработать, то пока нет смысла ради небольшого улучшения переделывать всё заново. Склепал под виндой, чуть зрение не посадил разглядывая мелкие буквочки.
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 >>>
Вообще для таких целей Перл в самый раз
Наверно это так, но для этого нужно затратить время и силы. Вначале до ассемблера надо добраться В описанном выше режиме бот уже работает. Как говорится, техника на грани фантастики: нажал на кнопку и спина в мыле
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.
Листинг ниасилил.
Но чтото мне подсказывает, что нужно элементарно сформировать http request типа get и сказать его целевому серверу в 80й порт. response'ом будет требуемая html-страничка.
hardcase, +1. это провельный патход.
ХДС, ну или пэхопэ
Еще вариант:
1. Список ссылок -> файл;
2. wget -i <этот файл>;
3. Обработать полученные документы программой на Паскале.
GNU Wget/Win32: http://users.ugent.be/~bpuype/wget/
Не получится.
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 А затем просмотри результат блокнотом. А вот в текстовом формате опера делает практически скриншот того что есть на экране. С этим уже можно работать.
Составлять файл со списком адресов долго. Это имееет смысл если следущий адрес нельзя вычислить. В противном случае можно задать адреса только первой и последней страницы, они отличаются всего одной цифрой. Оставшиеся адреса прога вычислит самостоятельно. Последовательность работы такая:
1 Получить данные в командной строке.
2 Вычислить адрес нужной страницы.
3 Дать задание броузеру или утилите в командной строке.
4 Обработать и удалить текстовой файл.
5 При необходимости гото 2;
6 Закрытие открытого файла и выход.
[немного оффтоп]
Вот ещё очень простой способ сохранять сохранять файл по ссылке для Delphi (немного модифицированный мной пример из DRKB). просто сохранять, не в текстовом виде
Прикрепленные файлы
Downloading.pas ( 1.58 килобайт )
Кол-во скачиваний: 344
Последняя ссылка конечно интересна.