Войти

Показать полную графическую версию : "#" в ссылке в vbs


Sisin
15-05-2018, 14:36
Как сделать, чтобы в 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
Sisin, а разве может быть в пути ссылки #? Он же якорь обозначает.

Sisin
16-05-2018, 10:30
Sisin, а разве может быть в пути ссылки #? Он же якорь обозначает. »

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

Iska
16-05-2018, 11:41
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
у меня под 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
Sisin, для информации: а до того под каким IE Вы пробовали?

Sisin
16-05-2018, 12:49
Sisin, для информации: а до того под каким IE Вы пробовали? »

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

Iska
16-05-2018, 12:52
Sisin, а почему ж тогда у Вас с первым кодом не сложилось:
Из-за того, что в ссылке "#" - ссылка не читается. »
? По факту ведь отличий от второго — нет ничего.

Sisin
16-05-2018, 13:01
? По факту ведь отличий от второго — нет ничего. »

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

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

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

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




© OSzone.net 2001-2012