Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] скачать файл из инета из cgi-bin => location.replace (http://forum.oszone.net/showthread.php?t=197103)

AlexM 20-01-2011 06:32 1592817

скачать файл из инета из cgi-bin => location.replace
 
Читаю файлы из инета. Использовал inetget. Сегодня наткнулся на список ссылок вида:
cgi-bin/viewlist.pl?id=75349

при копировании ссылки в окно firefox она дает окно на загрузку, однако в автоит скаченный файл - html:
window.location.replace("/files/75349.pdf")

Можно как чтобы autoit читал такие файлы с инета? Альтернативно можно писать анализ что если ответ вида .location.replace то повторить скачку с новым адресом. Может все-же это уже реализовано?

Спасибо!

Creat0R 20-01-2011 10:46 1592927

[Сеть, интернет] Как скачать файл с родным именем?

AlexM 24-01-2011 07:11 1595880

Спасибо! Код интересный и я кое-что оттуда узнал. Однако с моей ссылкой вместо реального пути к файлу функция _HTTPGetResponse возвращает в первой строке "OK" вместо "found", а строки "location:" вовсе нет - поэтому не срабатывает. Интересно почему, кто знает?

Да, на всякий вот полный путь если кто захочет поэкспериментировать:
http://www.lada-auto.ru/cgi-bin/view...es&ext=pdf

madmasles 24-01-2011 10:45 1595981

AlexM,
С этой ссылкой у меня так скачивает:
Код:

#include <INet.au3>

$sUrl = 'http://www.lada-auto.ru/cgi-bin/viewlist.pl?id=85544&fld=file_&tbl=vaz_catalogue_notes&ext=pdf'

If Not InetGetSize($sUrl) Then
    $sText = _INetGetSource($sUrl)
    $sFirstPartNewUrl = StringRegExpReplace($sUrl, '\A(http://.*?/)\w?.*', '\1')
    $sSecondPartNewUrl = StringRegExpReplace($sText, '(?s).*?\("/(.*?)"\)?.*', '\1')
    $sFileName = StringRegExpReplace($sSecondPartNewUrl, '^.*/', '')
    $sNewUrl = $sFirstPartNewUrl & $sSecondPartNewUrl
    $hDownload = InetGet($sNewUrl, @ScriptDir & '\' & $sFileName, 1, 1)
    Do
        Sleep(20)
    Until InetGetInfo($hDownload, 2)
    $nBytes = InetGetInfo($hDownload, 0)
    InetClose($hDownload)
    MsgBox(64, 'OK', 'Скачан файл ' & $sFileName & @CRLF & ' размером ' & $nBytes & ' b')
Else
    InetGet($sUrl, @ScriptDir & '\Test.pdf')
EndIf

Или сразу из ссылки "выдрать" прямую ссылку и скачать по ней:
Код:

$sUrl = 'http://www.lada-auto.ru/cgi-bin/viewlist.pl?id=85544&fld=file_&tbl=vaz_catalogue_notes&ext=pdf'
$sCatalog = StringRegExpReplace($sUrl, '\A(http://.*?/)\w?.*fld=(.*?)_&?.*', '\1\2/')
$sFileName = StringRegExpReplace($sUrl, '(?s).*?id=(.*?)&fld?.*', '\1')
$sExt = StringRegExpReplace($sUrl, '(?s).*?ext=(.*?)\z', '\1')

$sNewUrl = $sCatalog & $sFileName & '.' & $sExt
MsgBox(64, '', 'Прямая ссылка: ' & $sNewUrl & @CRLF & 'Имя файла: ' & $sFileName & '.' & $sExt)



Время: 17:31.

Время: 17:31.
© OSzone.net 2001-