Спрашивающий
Получение содержимого вэб страницы в виде HTML кода с помощью PowerShell

Вопрос
-
Добрый день.
Нужно получить содержимое вэб старницы, грубо говоря некий форум, чтобы распарсить его содержимое. Как получить я знаю, с помощью System.Net.WebRequest, но проблема в том, что, содержимое, нужной мне страницы, в каком то своем специфичном виде и к примеру тексты сообщений в коде нет, а они мне и нужны. Есть ли какой то способ это выдернуть с вэб страницы?
4 июня 2013 г. 10:54
Все ответы
-
$w =Invoke-WebRequest http://ya.ru
$w.Content
$w.RawContent
4 июня 2013 г. 11:23Отвечающий -
Да все верно, но, не принимает у меня страница учетные данные для входа. Дело в том что, я хочу получить контент, который виден только из под моей учетной записи. Возможно я неправильно делаю, не силен в вэбе:
$w =Invoke-WebRequest http://ya.ru -Credential $cred
а получаю содержимое страницы входа на форум. Как быть?
4 июня 2013 г. 11:58 -
Да все верно, но, не принимает у меня страница учетные данные для входа. Дело в том что, я хочу получить контент, который виден только из под моей учетной записи. Возможно я неправильно делаю, не силен в вэбе:
$w =Invoke-WebRequest http://ya.ru -Credential $cred
а получаю содержимое страницы входа на форум. Как быть?
Все будет зависеть от форума, если предоставите данные(ссылку на форум) можно попробовать.4 июня 2013 г. 12:02Отвечающий -
https://liviz.c2.groupcamp.com/
скорее некий портал.
4 июня 2013 г. 12:11 -
Попробовать:
$r = Invoke-WebRequest https://liviz.c2.groupcamp.com/ -SessionVariable lv $form = $r.Forms[1] $form.Fields["user_login"] = "test" $form.Fields["password"] = "fdf" $r = Invoke-WebRequest -Uri https://liviz.c2.groupcamp.com/ -WebSession $lv -Method POST -Body $form.Fields
4 июня 2013 г. 12:27Отвечающий -
Не удается индексировать в массив NULL.
Не удается индексировать в массив NULL.
строка:3 знак:1
+ $form.Fields["user_login"] = "test"
строка:4 знак:1
+ $form.Fields["password"] = "fdf"
я так понял форм не получает он никаких.
$r.forms пусто, count = 0.
4 июня 2013 г. 12:37 -
Проверил на двух машинах:
PS > $r.Forms | ft -a Id Method Action Fields -- ------ ------ ------ lang_form post {[langswitch, ]} post {[input_need_cookie, 0], [user_login, ], [password, ]} post /mdp {[username, ]}
Как вариант воспользоваться IE:
$ie = New-Object -ComObject internetexplorer.application $ie.Navigate("https://liviz.c2.groupcamp.com/") $ie.Visible = 1 while($ie.Busy) { start-sleep -mi 10 } $f=$ie.Document.forms.item(1) $f.item(1).value = "user" $f.item(2).value = "pass" $f.item(3).click()
4 июня 2013 г. 12:47Отвечающий -
Да, глюк у меня на компе с отсутствием форм, буду разбираться. Но все равно содержимое я получаю не то, содержимое то же самое что и без входа, при чем делаю потом вэб запрос по ссылке на нужную мне ветку и все равно содержимое то же, что и в начале было...4 июня 2013 г. 13:14
-
Да, глюк у меня на компе с отсутствием форм, буду разбираться. Но все равно содержимое я получаю не то, содержимое то же самое что и без входа, при чем делаю потом вэб запрос по ссылке на нужную мне ветку и все равно содержимое то же, что и в начале было...
После логина запрос такой?
$r = Invoke-WebRequest -Uri https://liviz.c2.groupcamp.com/data/dfsdf -WebSession $lv
4 июня 2013 г. 13:26Отвечающий -
Не понял, я выполнил
$r = Invoke-WebRequest https://liviz.c2.groupcamp.com/ -SessionVariable lv $form = $r.Forms[1] $form.Fields["user_login"] = "test" $form.Fields["password"] = "fdf" $r = Invoke-WebRequest -Uri https://liviz.c2.groupcamp.com/ -WebSession $lv -Method POST -Body $form.Fields
и получил в Content содержимое заглавной страницы личного кабинета, и даже если я открываю нужную мне ветку и затем копирую URI ссылка и делаю Invoke-WebRequest к ней то все равно получаю содержимое главной страницы личного кабинета.
4 июня 2013 г. 13:37 -
Не понял, я выполнил
$r = Invoke-WebRequest https://liviz.c2.groupcamp.com/ -SessionVariable lv $form = $r.Forms[1] $form.Fields["user_login"] = "test" $form.Fields["password"] = "fdf" $r = Invoke-WebRequest -Uri https://liviz.c2.groupcamp.com/ -WebSession $lv -Method POST -Body $form.Fields
и получил в Content содержимое заглавной страницы личного кабинета, и даже если я открываю нужную мне ветку и затем копирую URI ссылка и делаю Invoke-WebRequest к ней то все равно получаю содержимое главной страницы личного кабинета.
Invoke-WebRequest к ней с параметром -WebSession $lv ?4 июня 2013 г. 13:38Отвечающий -
Да. Странно, ведь это результат запроса, например в Chrome есть такой инструмент, выделяешь любой текст на странице и правой кнопкой мыши и "Просмотр кода элемента" и вот там он показывает именно то, что мне нужно, следовательно содержимое есть, но откуда его извлечь не пойму.
4 июня 2013 г. 13:44 -
Да. Странно, ведь это результат запроса, например в Chrome есть такой инструмент, выделяешь любой текст на странице и правой кнопкой мыши и "Просмотр кода элемента" и вот там он показывает именно то, что мне нужно, следовательно содержимое есть, но откуда его извлечь не пойму.
$r.Content
$r.RawContent
4 июня 2013 г. 13:49Отвечающий -
Я уже писал, там то же содержимое что и на главной странице личного кабинета, а похоже содержимое, которое мне нужно каким то хитрым методом туда подтягивается.4 июня 2013 г. 13:53
-
Ради интереса, сохранил страницу целиком, и в html файле были заголовки и тема обсуждения, но комментариев не было, хотя они там есть. Выходит данный портал так реализован, что стандартными средствами типа invoke-webrequest получить исходный код запроса не выходит, печально, или неизвестно как его получить.5 июня 2013 г. 7:10