Пакет Rcrawler: Rcrawler не сканирует некоторые веб-сайты

Я использую Rcrawler для сканирования вектора URL-адресов. Для большинства из них это работает хорошо, но время от времени один из них не сканируется. Сначала я замечал это только на сайтах https://, которые были адресованы здесь . Но я использую версию 0.1.7, которая должна иметь возможность https://.

Я также нашел другого пользователя, у которого такая же проблема, но с http:/ /ссылки тоже. Я проверил свой экземпляр, и его веб-сайты тоже не сканировались должным образом.

Вот что я получаю, когда пытаюсь просканировать один из этих сайтов:

>library(Rcrawler)
>Rcrawler("https://manager.submittable.com/beta/discover/?page=1&sort=")
>In process : 1..
Progress: 100.00 %  :  1  parssed from  1  | Collected pages: 1  | 
Level: 1 
+ Check INDEX dataframe variable to see crawling details 
+ Collected web pages are stored in Project folder 
+ Project folder name : manager.submittable.com-191922 
+ Project folder path : /home/anna/Documents/Rstudio/Submittable/manager.submittable.com-191922 

Есть предположения? Ждем ответа от создателя.


person amarbut    schedule 20.04.2018    source источник
comment
Есть ли какое-либо сообщение об ошибке, которое дает больше информации? Судя по логу все нормально   -  person Nico Haase    schedule 20.04.2018
comment
Может быть, содержание robots.txt рассматриваемого сайта запрещает сканирование?   -  person IRTFM    schedule 20.04.2018
comment
@NicoHaase, никаких сообщений об ошибках. Согласно R, все работает так, как и должно быть, но если вы зайдете на эти сайты, определенно есть внутренние URL-адреса, которые не подхватываются. Может быть, 42- правильно, и это мера безопасности, введенная хостом.   -  person amarbut    schedule 20.04.2018


Ответы (1)


Вы пытаетесь сканировать страницы, защищенные паролем + javascript, вам нужен веб-драйвер для создания сеанса входа и отображения элементов javascript, по этой причине Rcrawler V 0.1.9 реализует веб-драйвер phantomjs.

В вашем случае начните с установки последней версии Rcrawler, затем выполните следующие действия:

1 – Установите веб-драйвер (фактически phantomjs)

library(Rcrawler)    
install_browser()

2 – Запустите безголовый браузер (настоящий браузер, но невидимый br ‹-run_browser()

Если вы получаете сообщение об ошибке, это означает, что ваша операционная система или антивирус блокирует процесс веб-драйвера (phantom.js), попробуйте временно отключить антивирус или настроить конфигурацию системы, чтобы разрешить исполняемые файлы phantomjs и processx.

3- Аутентификация сеанса

 br<-LoginSession(Browser = br, LoginURL = 'https://manager.submittable.com/login',
                  LoginCredentials = c('your login','your pass'),
                  cssLoginFields =c('#email', '#password'),
                  XpathLoginButton ="//*[@type=\'submit\']" )

4 – Просканируйте страницы веб-сайта

Rcrawler(Website ="https://manager.submittable.com/beta/discover/",no_cores = 1,no_conn = 1, LoggedSession = br, RequestsDelay = 3)

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

br$session$

RequestsDelay: на каждый запрос дается 3 секунды, зная, что для полной загрузки некоторых javascript требуется некоторое время.

no_cores=no_conn=1: получать страницы по одной, так как некоторые веб-сайты запрещают несколько зарегистрированных сеансов.
Rcrawler сканирует/извлекает защищенный паролем веб-сайт, отправляемый

Предполагается, что это сканирует веб-страницы, защищенные паролем, однако более крупные веб-сайты имеют расширенную защиту от очистки веб-страниц, например reCAPTCHA или другие правила http/javascript, которые обнаруживают последовательные/автоматические запросы. Так что лучше использовать их API, если они его предоставляют.

мы все еще работаем над обеспечением возможности обхода нескольких веб-сайтов с помощью одной команды. До сих пор вы можете сканировать только каждый отдельно или использовать функцию ContentScraper, если хотите очистить URL-адреса/страницы с одного и того же веб-сайта.

Создатель Rcrawler

person SalimK    schedule 14.11.2018