Что нового

[Сеть, интернет] IE and fb2. Загрузка несколько файлов fb2

warwar52

Новичок
Сообщения
13
Репутация
0
Здравствуйте! Вот сайтhttp://bookfor.ru/24901-ne%C2%A0otstupat-i%C2%A0ne%C2%A0sdavatsya-moya%C2%A0neveroyatnaya-istoriya.html
Нужно скачать файл fb2 с этой страницы. Мой код не выкачивает. Почему так?
Код:
$html = InetRead("http://bookfor.ru/24901-ne%C2%A0otstupat-i%C2%A0ne%C2%A0sdavatsya-moya%C2%A0neveroyatnaya-istoriya.html", 1) ;читаем исходный код страницы
$html = BinaryToString($html, 4)
;ConsoleWrite($html)
$fblinks = StringRegExp($html, '(?:href=")(.*fb2)(?:")', 3) ;находим все линки на FB2
MsgBox(0, "Info", $fblinks)
If IsArray($fblinks) Then
    For $i In $fblinks

        $filename = StringSplit($i, "/")
        $filename = $filename[UBound($filename)-1]
        $filename = StringReplace($filename, "%5", "")
        $filename = StringReplace($filename, "'", "") ;создаем название файлу
        ConsoleWrite($filename& @CRLF)
        $hDownload=InetGet($i, "C:\Test\"&$filename, 1) ;качаем файл
        InetClose($hDownload)
    Next
EndIf
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Лучше не плодить темы, проще будет уловить суть вопроса.
Код:
$fblinks = StringRegExp($html, '(?:href=")(.*fb2)(?:")', 3) ;это регулярное выражение, которое из кода страницы сайта достаёт нужную ссылку.

Код страниц на разных сайтах разный, ссылки оформлены по-разному, поэтому регулярное выражение '(?:href=")(.*fb2)(?:")' каждый раз придется подстраивать под конкретный сайт.
 
Автор
W

warwar52

Новичок
Сообщения
13
Репутация
0
Да, прошу прощения. Но в этом же сайте как? Я и пытаюсь разобраться в этом выражении. Я в Autoit новичок. Поэтому не судите, пожалуйста, строго. Заранее спасибо!
 

hedji

Продвинутый
Сообщения
409
Репутация
94
ссылка на сайте имеет вид <a href="/download.php?id=11104976&amp;f=fb2&amp;n=24901">fb2< / a>
значит чтобы вытащить то, что находится между <a href=" и ">fb2< / a>
нужна регулярка типа такой '<a href=.(.*).>fb2< / a>' (работоспособность не проверял)
т.е. ищем то, что
начинается с <a href=.
содержит неизвестное количество любых знаков .*
заканчивается на .>fb2< / a>
и возвращаем только то, что между, поэтому .* берем в скобки (.*)
подробнее здесь
 
Автор
W

warwar52

Новичок
Сообщения
13
Репутация
0
Почему-то не выкачивает.

А еще вопрос. Что можно исправить в регулярных выражениях, если код ссылки: <a onclick="javascript:downloadAttachment(1724990);">GTD_10130192_071116_0011580.pdf</a>?
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Сначала убедитесь, что полученная ссылка работоспособна, потом переходите реализации скачивания по данной ссылке:
Код:
$html = InetRead("http://bookfor.ru/24901-ne%C2%A0otstupat-i%C2%A0ne%C2%A0sdavatsya-moya%C2%A0neveroyatnaya-istoriya.html", 1) ;читаем исходный код страницы
$html = BinaryToString($html, 4)
;ConsoleWrite($html)
$fblinks = StringRegExp($html, '<a href=.(.*).>fb2</a>', 3) ;находим все линки на FB2
If IsArray($fblinks) Then
    For $i In $fblinks
        ConsoleWrite("http://bookfor.ru" & $i& @CRLF) ;смотрим в консоли полученные ссылки и пробуем по ним скачать
    Next
EndIf
 
Автор
W

warwar52

Новичок
Сообщения
13
Репутация
0
Да, она работоспособна. Просто не выкачивает. Может, нужно что-то исправить в процедуре скачивания?
Код:
hDownload=InetGet($i, "C:\Test\"&$filename, 1) ;качаем файл
 

hedji

Продвинутый
Сообщения
409
Репутация
94
ссылка ($i) не равна ссылке ("http://bookfor.ru" & $i)
Код:
ConsoleWrite("C:\Test\" & $filename & @CRLF) ;какое имя файла получилось в итоге? в ОС можно создать файл с таким именем? папка Test уже существует? В неё можно писать не от имени админа?
 
Автор
W

warwar52

Новичок
Сообщения
13
Репутация
0
Cсылка в консоли написана так:http://bookfor.ru/download.php?id=11104976&f=fb2&n=24901
Если я просто скачаю без скрипта, то получаю файл формата zip. Название файла: [bookfor_ru]-11104976.zip
Может в этом дело.
Папка существует.
И можно писать не от админа.

А еще вопрос. Что можно исправить в регулярных выражениях, если код ссылки: <a onclick="javascript:downloadAttachment(1724990);">GTD_10130192_071116_0011580.pdf[/url]?
 
Верх