Можно:можно ли с помощью AutoIt скачать документы формата *.doc с этой страницы
InetGet("http://old.krd.ru/www/norma.nsf/8f9751d349198654c3256a7500362825/f3ffe108c5ea21afc32578b2001c3e08/$FILE/105-р.doc", @DesktopDir & "\105-р.doc")
#include <Encoding.au3>
#include <Array.au3>
$sUrl = 'http://www.krd.ru/norma/F3FFE108C5EA21AFC32578B2001C3E08.htm'
$iSize = 0
$sSourse = InetRead($sUrl, 17)
If @error Then
MsgBox(16, 'Error', @error)
Exit
EndIf
$aLiks = StringRegExp(BinaryToString($sSourse), 'a href="(http.*?.doc)"><', 3)
If @error Then
MsgBox(16, 'Error', @error)
Exit
EndIf
$iDownload_Counter = UBound($aLiks)
Dim $ahInetGet[$iDownload_Counter + 1][3] = [[$iDownload_Counter]]
ConsoleWrite('-------> Всего файлов: ' & $iDownload_Counter & @CR)
For $i = 1 To $ahInetGet[0][0]
$ahInetGet[$i][0] = _Encoding_HexToURL(StringRegExpReplace($aLiks[$i - 1], '^.*/', ''))
$ahInetGet[$i][1] = InetGet($aLiks[$i - 1], @ScriptDir & '\' & $ahInetGet[$i][0], 17, 1)
Next
While $iDownload_Counter
For $i = 1 To $ahInetGet[0][0]
If Not $ahInetGet[$i][2] Then
If InetGetInfo($ahInetGet[$i][1], 2) Then
If Not InetGetInfo($ahInetGet[$i][1], 4) Then
ConsoleWrite($ahInetGet[$i][0] & ' --> OK' & @CR)
$ahInetGet[$i][2] = 'OK'
$iSize = InetGetInfo($ahInetGet[$i][1], 0)
$ahInetGet[0][1] += $iSize
Else
ConsoleWrite($ahInetGet[$i][0] & ' --> ERROR' & @CR)
$ahInetGet[$i][2] = 'ERROR'
EndIf
InetClose($ahInetGet[$i][1])
$ahInetGet[$i][1] = $iSize & ' b'
$iSize = 0
$iDownload_Counter -= 1
ConsoleWrite('--> Осталось закачек: ' & $iDownload_Counter & ' (' & $ahInetGet[0][0] & ')' & @CR)
EndIf
EndIf
Next
Sleep(1000)
WEnd
$ahInetGet[0][1] &= ' b'
_ArrayDisplay($ahInetGet)
;~ #include <Array.au3>
$sDDir = @ScriptDir&"\DOCS"
$sTempFile = $sDDir&"\temp.txt"
DirCreate($sDDir)
FileDelete($sTempFile)
InetGet("http://www.krd.ru/norma/F3FFE108C5EA21AFC32578B2001C3E08.htm",$sTempFile)
$hOpen = FileOpen($sTempFile, 0)
If $hOpen = -1 Then
MsgBox(16,"krd.ru","Не удалось скачать страницу!")
Exit
EndIf
$sRead = FileRead($hOpen)
FileClose($hOpen)
FileDelete($sTempFile)
If $sRead = "" Then
MsgBox(16,"krd.ru","Как это скачали пустую страницу?! :D")
Exit
EndIf
$aFiles = StringRegExp($sRead,'<a href="([^>]+)\.doc">',3)
;~ _ArrayDisplay($aFiles)
If Not IsArray($aFiles) Or UBound($aFiles) < 1 Then
MsgBox(16,"krd.ru","Ссылки не найдены!")
Exit
EndIf
$iMsg = MsgBox(68,"krd.ru","Найденно ссылок: "&UBound($aFiles)-1&@CRLF&"Начать скачивать?")
If $iMsg <> 6 Then Exit
ToolTip("Готовимся к скачиванию!",10,10,"0 из "&UBound($aFiles)-1)
For $n = 0 To UBound($aFiles)-1
$sName = _Encoding_HexToURL(StringRegExpReplace($aFiles[$n],"(.+)/([^/]+)","\2"))&".doc"
;~ MsgBox(0,"",$sName)
$hDownLoad = InetGet($aFiles[$n]&".doc",$sDDir&"\"&$n+1&"_"&$sName,1,1)
Do
Sleep(100)
ToolTip($sName&" ("&Int(InetGetInfo($hDownLoad,0)*100/InetGetInfo($hDownLoad,1))&"%)",10,10,$n+1&" из "&UBound($aFiles)-1)
Until InetGetInfo($hDownLoad,2)
Next
ToolTip("Готово!",10,10,"Всё!")
Sleep(3000)
Run(@WindowsDir&'\explorer.exe "'&$sDDir&'"')
Exit
;Description: Converts HEX string to URL string (equivalent to _StringURIDecode function)
;Author: CreatoR
Func _Encoding_HexToURL($sURLHex)
Local $aURLHexSplit = StringSplit($sURLHex, "")
Local $sRetString = "", $iDec, $iUbound = UBound($aURLHexSplit)
For $i = 1 To $iUbound - 1
If $aURLHexSplit[$i] = "%" And $i + 2 <= $iUbound - 1 Then
$i += 2
$iDec = Dec($aURLHexSplit[$i - 1] & $aURLHexSplit[$i])
If Not @error Then
$sRetString &= Chr($iDec)
Else
$sRetString &= $aURLHexSplit[$i - 2]
EndIf
Else
$sRetString &= $aURLHexSplit[$i]
EndIf
Next
Return _Encoding_UTF8ToANSI($sRetString)
EndFunc ;==>_Encoding_HexToURL
;Description: Converts UTF-8 string to ANSI encoding
;Author: CreatoR
Func _Encoding_UTF8ToANSI($sString)
Return BinaryToString(StringToBinary($sString), 4)
EndFunc ;==>_Encoding_UTF8ToANSI
_IEAttach(), а дальше возможны варианты.страницы, которая у тебя активна в данный момент? (в IE, для простоты)
;...поменяйте у себя
$hOpen = FileOpen($sTempFile, 0)
If Not $hOpen Then
;...на
$hOpen = FileOpen($sTempFile, 0)
If $hOpen = -1 Then
;...и
$iMsg = MsgBox(68, "krd.ru", "Найденно ссылок: " & UBound($aFiles) - 1 & @CRLF & "Начать скачивать?")
;...на
$iMsg = MsgBox(68, "krd.ru", "Найденно ссылок: " & UBound($aFiles) & @CRLF & "Начать скачивать?")
Код:$iMsg = MsgBox(68, "krd.ru", "Найденно ссылок: " & UBound($aFiles) - 1 & @CRLF & "Начать скачивать?") ;...на $iMsg = MsgBox(68, "krd.ru", "Найденно ссылок: " & UBound($aFiles) & @CRLF & "Начать скачивать?")
Зачем? Первая ссылка в нулевом элементе массива!
Dim $aArray[5] = [1, 2, 3, 4, 5]
MsgBox(64, 'Info', 'Всего элементов в массиве: ' & UBound($aArray) & @LF & _
'Их индексы от 0 до 4')
#include <IE.au3>
#include <Array.au3>
Global $s_Download_Dir = @ScriptDir&"\DOCS"
Global $i_File = 0
Global $a_Downloads_Files[1][2] = [[0]]
Global $i_Check = 1
DirCreate($s_Download_Dir)
Global $h_IE = _IECreate("http://www.krd.ru/norma/F3FFE108C5EA21AFC32578B2001C3E08.htm",0,1,0)
If @error Then
MsgBox(16,@ScriptName,"_IECreate() ошибка! Код: "&@error)
Exit
EndIf
HotKeySet("{INS}","_CheckLinks")
HotKeySet("{DEL}","_Arr")
HotKeySet("{END}","_Exit")
While 1
If Not IsObj($h_IE) Then Exit
If $i_Check Then _CheckDownloads()
Sleep(100)
WEnd
Func _Exit()
Local $iMsg = MsgBox(68,@ScriptName,"Выйти?")
If $iMsg = 6 Then
For $n = 1 To $a_Downloads_Files[0][0]
InetClose($a_Downloads_Files[$n][0])
Next
ReDim $a_Downloads_Files[1][2]
$a_Downloads_Files[0][0] = 0
Exit
EndIf
EndFunc
Func _Arr()
_ArrayDisplay($a_Downloads_Files)
EndFunc
Func _CheckLinks()
Local $sHTML = _IEBodyReadHTML($h_IE)
If @error Or $sHTML = "" Then
MsgBox(16,@ScriptName,"Не удалось прочитать исходный код страницы!")
Return 0
EndIf
ClipPut($sHTML)
Local $aFiles = StringRegExp($sHTML,'href="([^>]+)\.doc"',3)
If Not IsArray($aFiles) Or UBound($aFiles) < 1 Then
MsgBox(16,@ScriptName,"Ссылки не найдены!")
Return 0
EndIf
Local $iMsg = MsgBox(68,@ScriptName,"Найденно ссылок: "&UBound($aFiles)&@CRLF&"Начать скачивать?")
If $iMsg <> 6 Then Return 0
For $i = 0 To UBound($aFiles)-1
;~ _Arr()
_AddDownload($aFiles[$i]&".doc")
Next
;~ _Arr()
EndFunc
Func _AddDownload($sURL)
Local $sFile = _Encoding_HexToURL(StringRegExpReplace($sURL,"(.+)/([^/]+)","\2"))&".doc"
Local $iInetGet = InetGet($sURL,$s_Download_Dir&"\"&$sFile,1,1)
;~ MsgBox(0,$iInetGet,$sURL&@CRLF&$sFile)
If @error Then Return 0
ReDim $a_Downloads_Files[UBound($a_Downloads_Files)+1][2]
$a_Downloads_Files[0][0] = UBound($a_Downloads_Files)-1
$a_Downloads_Files[$a_Downloads_Files[0][0]][0] = $iInetGet
$a_Downloads_Files[$a_Downloads_Files[0][0]][1] = $sFile
EndFunc
Func _CheckDownloads()
If $a_Downloads_Files[0][0] < 1 Then Return 0
Local $a[1][2] = [[0]], $stext = "Всего: %s", $proc
For $o = 1 To $a_Downloads_Files[0][0]
If Not InetGetInfo($a_Downloads_Files[$o][0],2) Then
ReDim $a[UBound($a)+1][2]
$a[0][0] = UBound($a)-1
$a[$a[0][0]][0] = $a_Downloads_Files[$o][0]
$a[$a[0][0]][1] = $a_Downloads_Files[$o][1]
$proc = Int(InetGetInfo($a_Downloads_Files[$o][0],0)*100/InetGetInfo($a_Downloads_Files[$o][0],1))
If $proc < 0 Then $proc = 0
$stext &= @CRLF&$a_Downloads_Files[$o][1]&" ("&$proc&"%)"
EndIf
Next
Global $a_Downloads_Files = $a
If $stext = "Всего:" Then Return ToolTip("")
ToolTip(StringFormat($stext,$a_Downloads_Files[0][0]),10,10,"Закачки:")
EndFunc
Func _Encoding_HexToURL($sURLHex)
Local $aURLHexSplit = StringSplit($sURLHex, "")
Local $sRetString = "", $iDec, $iUbound = UBound($aURLHexSplit)
For $i = 1 To $iUbound - 1
If $aURLHexSplit[$i] = "%" And $i + 2 <= $iUbound - 1 Then
$i += 2
$iDec = Dec($aURLHexSplit[$i - 1] & $aURLHexSplit[$i])
If Not @error Then
$sRetString &= Chr($iDec)
Else
$sRetString &= $aURLHexSplit[$i - 2]
EndIf
Else
$sRetString &= $aURLHexSplit[$i]
EndIf
Next
Return _Encoding_UTF8ToANSI($sRetString)
EndFunc ;==>_Encoding_HexToURL
Func _Encoding_UTF8ToANSI($sString)
Return BinaryToString(StringToBinary($sString), 4)
EndFunc ;==>_Encoding_UTF8ToANSI
ты просто не оставляешь шансов SECTOR'у ! ;D
PS: Ненавижу IE
Говорит, что в Хроме нет политик безопасности