2015-04-23 3 views
0

Мне бы хотелось, чтобы данные веб-лома вынимали с помощью R, но для этого сначала нужно войти на эту страницу (это аутентификация для приложения, которое я создал).Веб-скремблирование защищенного паролем веб-сайта с использованием R

https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg

Я могу получить данные Yammer когда я войти в эту страницу, но все это в браузере с помощью стандартной Yammer URLs (https://www.yammer.com/api/v1/messages/received.json)

Я прочитал подобные вопросы и попробовал предложения, но все же не могут пройти эту проблему.

Я пробовал использовать httr, RSelenium, rvest + Selector gadget.

Конечная цель состоит в том, чтобы сделать все в R (получение данных, очистка, анализ настроений ... часть очистки и анализа настроений выполнена, но на данный момент часть данных становится ручной, и я бы хотел автоматизировать это обработки его от R)

1.Trial использованием HTTR:

usinghttr<- GET("https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg", 
    authenticate("Username", "Password")) 

соответствующий результат: Ответ [https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg] Дата: 2015-04-27 12:25 Статус: 200 Content-Type: text/html; charset = utf-8 Размер: 15.7 kB Содержание этой страницы показало, что она открыла страницу входа, но не аутентифицировалась.

2.Trial с помощью селектора гаджет + rvest

я пытался выскабливание википедии, используя этот метод, но не смог применить его к Yammer в качестве удостоверения подлинности требуется перед вызовом HTML тег, который дает selctor гаджет.

3.Trial использованием RSelenium

попытался это, используя стандартные браузеры и phantomjs но есть некоторые ошибки

> startServer() 

< remDr - remoteDriver $ новый()

remDr $ open() [1] «Подключение к удаленному серверу» Неопределенная ошибка в вызове RCurl. Ошибка в queryRD (paste0 (ServerURL, "/ сессии"), "пост", qdata = toJSON (serverOpts)):

> pJS <- phantom() 

Ошибка в фантома(): PhantomJS двоичным не находится.

+0

R действительно не велика в том, что и вы будете в конечном итоге. прыгая через некоторые болезненные обручи. Все это, вероятно, было решено для Python или C# или других более распространенных языков автоматизации. Вы должны подумать о том, чтобы использовать Python для создания ваших файлов данных и прочитать их R. –

+0

thx Mike, я видел, что в python есть пакет под названием yampy специально для yammer, но сейчас я хотел бы знать, могу ли я получить быстрое и грязное решение для этого с помощью R, полностью согласен с вами в том, что python даст больше надежное решение (на данный момент python находится в моем списке «Следующая вещь, чтобы узнать») – vinay

+0

Python не так уж сложно. Синтаксис немного странный (и бог поможет вам, если вы смешаете вкладки и пробелы в одном файле), но Python, вероятно, является одним из самых простых в изучении и наиболее универсальными языками. Это стоит изучить. –

ответ

0

Что вы пытаетесь достичь этим? Если вы просто хотите собирать данные, вы всегда можете использовать API экспорта данных для загрузки сетевых данных вместо анализа. Для этого требуется сеть Enterprise.

+0

Это ограничение: у меня нет учетной записи администратора/администратора этой конкретной страницы, с учетной записью администратора было бы очень легко загрузить сетевые данные с помощью API экспорта данных (я просто член сети, поэтому имеют самый базовый доступ) – vinay

+0

Не могли бы вы просто нажать обычную apis с указателем-носителем, чтобы получить столько данных, к которым у вас есть доступ? –

+0

Так что это будет течь вот так. 1. Создайте приложение (yammer.com/client_applications 2. Следуйте инструкциям здесь https://developer.yammer.com/v1.0/docs/test-token, чтобы получить токен, чтобы начать обращать вызовы API к публично документированному api то есть https://developer.yammer.com/v1.0/docs/rest-api-rate-limits –

1

Я также потратил очень много времени на доступ к защищенным паролем сайтам изнутри. Наконец, мне удалось это сделать, отправив учетные данные в виде html-формы. Я быстро взглянул на страницу входа в Yammer, и похоже на случай, когда мне удалось получить доступ.

Вот код, который я использовал. Вам необходимо адаптировать его к вашему контексту: сначала вы начинаете сеанс на странице входа в систему, вы достигаете формы, которая собирает идентификатор и пароль, и, наконец, вы отправляете форму. Я думаю, в вашем случае, следующий код будет работать:

session <- html_session("https://www.yammer.com/dialog/authenticate?client_id=iVGCK1tOhbZGS7zC8dPjg") 
    login_form <- session %>% html_nodes("form") %>% 
    .... %>% #Instructions that lead you to the login form, e.g. extract2(1) 
        html_form() %>% 
        set_values(`login` = YourId,`password` = YourPasswd) 
    Logged_in=session %>% submit_form(login_form)) 

logged_in должна содержать информацию о сеансе после входа в

BR

Смежные вопросы