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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   "#" в ссылке в vbs (http://forum.oszone.net/showthread.php?t=334844)

Sisin 15-05-2018 14:36 2813797

"#" в ссылке в vbs
 
Как сделать, чтобы в vbs работал?
Из-за того, что в ссылке "#" - ссылка не читается.


Код:

Option Explicit

Const navOpenInNewTab        = &H00800
Const navOpenInBackgroundTab  = &H01000
Const navOpenNewForegroundTab = &H10000
With WScript.CreateObject("InternetExplorer.Application")
 .Navigate "https://111/#/111"
 .Navigate2 "https://111/#/111", navOpenInNewTab
 .Visible = True
End With
 
WScript.Quit 0


Iska 15-05-2018 20:44 2813839

Sisin, а разве может быть в пути ссылки #? Он же якорь обозначает.

Sisin 16-05-2018 10:30 2813905

Цитата:

Цитата Iska
Sisin, а разве может быть в пути ссылки #? Он же якорь обозначает. »

Видимо якорь подняли)))
У Икеи весь каталог с "#". Например:
https://www.ikea.com/ru/ru/catalog/p...95/#/S69281696

Iska 16-05-2018 11:41 2813917

Sisin, спасибо за ссылку, получается, что могут.

Хмм… Вот это:
Код:

Option Explicit

Const READYSTATE_COMPLETE = 4


With WScript.CreateObject("InternetExplorer.Application")
        '.Visible = False
        .Visible = True
        .Navigate "https://www.ikea.com/ru/ru/catalog/products/S69251595/#/S69281696"
       
        Do
                WScript.Sleep 100
        Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
End With

WScript.Quit 0

у меня под IE9 отрабатывает вполне корректно.

Sisin 16-05-2018 12:24 2813928

Цитата:

Цитата Iska
у меня под IE9 отрабатывает вполне корректно. »

У меня тоже, спасибо.

Только добавил, чтобы можно было несколько вкладок открывать:

Код:

Option Explicit

Const navOpenInNewTab        = &H00800
Const navOpenInBackgroundTab  = &H01000
Const navOpenNewForegroundTab = &H10000
Const READYSTATE_COMPLETE = 4

With WScript.CreateObject("InternetExplorer.Application")
 '.Visible = False
 .Visible = True
 .Navigate "https://www.ikea.com/ru/ru/catalog/products/S69251595/#/S69281696"
 .Navigate2 "https://www.ikea.com/ru/ru/catalog/products/S69251595/#/S69281696", navOpenInNewTab       
Do
 WScript.Sleep 100
 Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
End With

WScript.Quit 0


Iska 16-05-2018 12:28 2813930

Sisin, для информации: а до того под каким IE Вы пробовали?

Sisin 16-05-2018 12:49 2813937

Цитата:

Цитата Iska
Sisin, для информации: а до того под каким IE Вы пробовали? »

И тогда и сейчас IE11.

Iska 16-05-2018 12:52 2813939

Sisin, а почему ж тогда у Вас с первым кодом не сложилось:
Цитата:

Цитата Sisin
Из-за того, что в ссылке "#" - ссылка не читается. »

? По факту ведь отличий от второго — нет ничего.

Sisin 16-05-2018 13:01 2813942

Цитата:

Цитата Iska
? По факту ведь отличий от второго — нет ничего. »

Все дело в строчках Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE.
Const READYSTATE_COMPLETE = 4
Do
WScript.Sleep 100
Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE

Без них не работает.

Iska 16-05-2018 13:20 2813947

Да ладно… У меня и без них работает. Браузер-то никуда не девается, в худшем случае потребуется немного подождать, пока не пройдёт загрузка.

Или это у Вас только начало скрипта, а дальше идёт работа с содержимым загруженной страницы? Тогда — да, иначе никак (ну, или тупо пауза/задержка в надежде, что страница успеет загрузится за указанное в паузе время).

В принципе, указанный подход хорошо работает на достаточно простых страницах. Хуже, когда там AJAX'а напихано по самое «мама не балуй». Тогда, бывает так, что и уже .Busy ложно, и .ReadyState равно READYSTATE_COMPLETE, но затем страница асинхронно продолжает подгружаться новыми запросами, и требуется энное число раз делать такие циклы Do…Loop через промежуточные паузы, дабы дождаться окончательной подгрузки страницы. Проще всего, когда на сайте есть какая-нибудь lite или мобильная версия страницы, на которых AJAX не используется — возни меньше, а результат тот же.

Sisin 16-05-2018 14:27 2813963

А нельзя ли в таком скрипте прописать для НЕКОТОРЫХ ссылок загрузку через прокси (Например, TOR) при условии, что TOR запущен и слушает 9050 порт??? Или так не сделать??


Время: 06:39.

Время: 06:39.
© OSzone.net 2001-