Rcrawler - Как сканировать сайты, защищенные учетной записью/паролем?

Я пытаюсь сканировать и очищать таблицы веб-сайта. У меня есть учетная запись на веб-сайте, и я обнаружил, что Rcrawl может помочь мне с получением частей таблицы на основе определенных ключевых слов и т. д. Проблема в том, что на странице GitHub нет упоминания о том, как сканировать сайт с учетной записью. /защита паролем.

Ниже приведен пример входа в систему:

login <- list(username="username", password="password",)

Есть ли у вас какие-либо идеи, есть ли у Rcrawler такая функция? Например что-то вроде:

Rcrawler(Website = "http://www.glofile.com" +
list (username = "username", password = "password" + no_cores = 4, no_conn = 4, ExtractCSSPat = c(".entry-title",".entry-content"), PatternsNames = c("Title","Content"))

Я уверен, что мой код выше неверен, но я надеюсь, что он даст вам представление о том, что я хочу сделать.


person Tasos Dalis    schedule 09.07.2018    source источник


Ответы (1)


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

В следующем примере попытаемся войти на сайт блога

 library(Rcrawler)

Загрузите и установите веб-драйвер

install_browser()

Запустите сеанс браузера

br<- run_browser()

Если вы получаете сообщение об ошибке, отключите антивирус или разрешите программу в настройках вашей системы.

Запустите автоматическое действие входа и верните сеанс входа в систему в случае успеха

 br<-LoginSession(Browser = br, LoginURL = 'http://glofile.com/wp-login.php'
                 LoginCredentials = c('demo','rc@pass@r'),
                 cssLoginFields =c('#user_login', '#user_pass'),
                cssLoginButton ='#wp-submit' )

Наконец, если вы уже знаете частные страницы, которые хотите очистить/скачать, используйте

DATA <- ContentScraper(... , browser =br)

Или просто просканируйте/очистите/скачайте все страницы

Rcrawler(Website = "http://glofile.com/",no_cores = 1 ,no_conn = 1,LoggedSession = br ,...)

Не используйте несколько параллельных no_cores/no_conn, так как многие веб-сайты отклоняют несколько сеансов одного пользователя. Оставайтесь законными и уважайте robots.txt, установив Obeyrobots = TRUE

Вы получаете доступ к функциям браузера, например:

 br$session$getUrl()
 br$session$getTitle()
 br$session$takeScreenshot(file = "image.png") 
person SalimK    schedule 16.11.2018
comment
Большое спасибо за ваш ответ... Похоже, интересная идея использовать Phantomjs. Я больше не работаю над проектом, который нуждался в творческом решении Rcrawler, но я уверен, что проблемой с phantomjs была бы их сетевая безопасность. Но если он позволяет ему работать, это может быть удивительным решением. - person Tasos Dalis; 07.01.2019