Страницы: 1
RSS
Как отобразить исходный код веб страницы после авторизации Power Query
 
Добрый день
Я пытаюсь авторизоваться на сайте и получить список гиперссылок на странице, но у меня получается увидеть только название самих гиперссылок.

В этом варианте я вижу название самих гиперссылок
Код
let    
Источник = Web.Page(Web.Contents("http://site", [Headers=[Authorization="http://site/?userName=asd&password=asd"]]))
in    
Источник

Когда пытаюсь отобразить страницу как текст, то получаю данные без авторизации, исходный код того что не авторизован.
Код
let
Источник = Table.FromColumns({Lines.FromBinary(Web.Contents("http://site", [Headers=[Authorization="http://site/?userName=asd&password=asd"]]))})
in
Источник

Так же у меня выходит способ если я вставляю куки то вижу исходный код страницы и сами ссылки гиперссылок, но куки через несколько часов перестают действовать.
Код
let
Источник = Table.FromColumns({Lines.FromBinary(Web.Contents("http://site", [Headers=[Cookie="ID=1345; path = /"]]))})
in
Источник

Можно ли вариант 1 преобразовать как текст и не потерять авторизацию? Либо как то получить куки из 1 варианта и вставить их в 3?

Спасибо.
 
Попробуйте Lines.FromBinary(Binary.Buffer(Web.Contents(... но проверить не на чем, не факт, что сработает
F1 творит чудеса
 
К сожалению не сработало(
Этот сайт работает только в нашей подсети, но есть точно такой же, не знаю поможет это или нет. У этого приложения 2 версии сайта 1 старая другая новая.


По этой ссылке проходит авторизация, сама страница будет пустая, но если открыть исходный код то там будут данные
http://workforce.levelone.com/supv/signin.do?realmId=customer1&userName=1234&password=1234

Потом нужно совершить переход по этой ссылке, в нем я вижу название гиперссылок а не сами ссылки.
http://workforce.levelone.com/supv/reportAction.do?selectedTabAction=/showReportList.do

Итоговый запрос выглядит так
Код
let    
Источник = Web.Page(Web.Contents("http://workforce.levelone.com/supv/reportAction.do?selectedTabAction=/showReportList.do", [Headers=[Authorization="http://workforce.levelone.com/supv/signin.do?realmId=customer1&userName=1234&password=1234"]]))
in    
Источник

В новой версии сайта есть поле "_58_redirect" которое может перекинуть на нужную страницу после авторизации, но авторизоваться в новой версии у меня не получается. Если авторизоваться в новой версии и перейти на нужную ссылку то это тоже будет работать.
http://workforce.levelone.com/web/guest/home
Изменено: GR - 30.10.2020 15:32:04
 
Цитата
GR написал:
Web.Page(
Пытается разобрать содержимое, а не выдавать содержимое как оно есть в html-разметке. Используйте, как советовал Максим
Код
Lines.FromBinary(Binary.Buffer(Web.Contents("http://workforce.levelone.com/supv/reportAction.do?selectedTabAction=/showReportList.do", [Headers=[Authorization="http://workforce.levelone.com/supv/signin.do?realmId=customer1&userName=1234&password=1234"]])))

И разбирайте текст. Web.Page не отдаст вам содержимое атрибута href ссылки - только её текст.
 
Я понимаю что не даст, но с Web.Page я вижу информацию как авторизованный пользователь, а с  "Lines.FromBinary(Binary.Buffer(Web.Contents(" авторизация у меня слетает.
 
Цитата
GR написал:
авторизация у меня слетает.
Попробуйте тогда Binary.Buffer убрать. Или в Power BI Desktop подёргать
Код
Web.BrowserContents("http://workforce.levelone.com/supv/reportAction.do?selectedTabAction=/showReportList.do", [Headers=[Authorization="http://workforce.levelone.com/supv/signin.do?realmId=customer1&userName=1234&password=1234"])
Этот метод выдаёт сразу текст, плюс, ко всему с учётом отработки наполнения страницы скриптами, а не как Web.Contents. Увы, даже в Excel 365 до сих пор нет ни Web.BrowserContents, ни Html.Tables :(
Изменено: Андрей VG - 30.10.2020 16:52:47 (Не верно ссылку оформил)
Страницы: 1
Наверх