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

  • Вопрос

  • Добрый день.

    Нужно получить содержимое вэб старницы, грубо говоря некий форум, чтобы распарсить его содержимое. Как получить я знаю, с помощью 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.
    строка:3 знак:1
    + $form.Fields["user_login"] = "test"

    Не удается индексировать в массив NULL.
    строка: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 получить исходный код запроса не выходит, печально, или неизвестно как его получить.