Автор Тема: [Сеть, интернет] IE and fb2. Загрузка несколько файлов fb2  (Прочитано 940 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн warwar52 [?]

  • Новичок
  • *
  • Сообщений: 11
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Здравствуйте! Вот сайтhttp://bookfor.ru/24901-ne%C2%A0otstupat-i%C2%A0ne%C2%A0sdavatsya-moya%C2%A0neveroyatnaya-istoriya.html
Нужно скачать файл fb2 с этой страницы. Мой код не выкачивает. Почему так?
Код: AutoIt [Выделить]
$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


Русское сообщество AutoIt


Оффлайн hedji [?]

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

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

Оффлайн warwar52 [?]

  • Новичок
  • *
  • Сообщений: 11

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

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 309
  • Репутация: 53
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
ссылка на сайте имеет вид <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>
и возвращаем только то, что между, поэтому .* берем в скобки (.*)
подробнее здесь
« Последнее редактирование: Январь 15, 2018, 16:22:42 от hedji »

Русское сообщество AutoIt

Re: [Сеть, интернет] IE and fb2. Загрузка несколько файлов fb2
« Ответ #3 Отправлен: Январь 15, 2018, 16:12:19 »

Оффлайн warwar52 [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Почему-то не выкачивает.

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

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 309
  • Репутация: 53
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Сначала убедитесь, что полученная ссылка работоспособна, потом переходите реализации скачивания по данной ссылке:
Код: AutoIt [Выделить]
$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
 


Оффлайн warwar52 [?]

  • Новичок
  • *
  • Сообщений: 11

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




Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 309
  • Репутация: 53
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
ссылка ($i) не равна ссылке ("http://bookfor.ru" & $i)
Код: AutoIt [Выделить]
 ConsoleWrite("C:\Test\" & $filename & @CRLF) ;какое имя файла получилось в итоге? в ОС можно создать файл с таким именем? папка Test уже существует? В неё можно писать не от имени админа?
 


Русское сообщество AutoIt

Re: [Сеть, интернет] IE and fb2. Загрузка несколько файлов fb2
« Ответ #7 Отправлен: Январь 15, 2018, 17:38:35 »

Оффлайн warwar52 [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.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]?

Русское сообщество AutoIt

Re: [Сеть, интернет] IE and fb2. Загрузка несколько файлов fb2
« Ответ #8 Отправлен: Январь 15, 2018, 17:56:36 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
8 Ответов
7727 Просмотров
Последний ответ Декабрь 16, 2017, 13:28:56
от ra4o
6 Ответов
4482 Просмотров
Последний ответ Март 20, 2011, 17:55:14
от HungryDwarf
1 Ответов
3206 Просмотров
Последний ответ Август 16, 2012, 11:59:23
от gregaz
1 Ответов
5479 Просмотров
Последний ответ Ноябрь 14, 2013, 16:09:24
от inververs
0 Ответов
955 Просмотров
Последний ответ Июль 03, 2014, 18:46:32
от Elena1989
3 Ответов
1931 Просмотров
Последний ответ Август 02, 2014, 20:07:42
от Garrett
10 Ответов
6344 Просмотров
Последний ответ Ноябрь 11, 2016, 00:01:52
от Anufriy
4 Ответов
873 Просмотров
Последний ответ Январь 13, 2018, 00:03:19
от Alofa
0 Ответов
676 Просмотров
Последний ответ Январь 16, 2018, 12:40:19
от warwar52
4 Ответов
232 Просмотров
Последний ответ Июнь 26, 2018, 15:04:00
от pvnn