Rcrawler包:Rcrawler没有抓取一些网站

时间:2018-04-20 14:44:57

标签: r web-scraping web-crawler rcrawler

我正在使用Rcrawler抓取网址向量。对于他们中的大多数人而言,它运作良好,但现在每个人都不会被抓取。起初我只是在https://网站上注意到了这一点,已经解决了here。但我使用的是版本0.1.7,它应该具有https://功能。

我还发现this other user遇到了同样的问题,但也有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 

有什么想法?还在等待创作者的回复。

1 个答案:

答案 0 :(得分:1)

您尝试抓取受密码保护的javascript页面,需要使用Web驱动程序来创建登录会话并呈现javascript元素,因此,Rcrawler V 0.1.9实现了phantomjs webdriver。

对于您的情况,请先安装最新版本的Rcrawler,然后按照以下步骤操作:

1-安装Web驱动程序(实际上是phantomjs)

library(Rcrawler)    
install_browser()

2-运行无头浏览器(是真正的浏览器,但不可见     br <-run_browser()

如果收到错误消息,则意味着您的操作系统或防病毒软件正在阻止Web驱动程序(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)

您可以使用:

来访问webdriver功能。
br$session$

RequestsDelay:每个请求有3秒的时间,知道某些javascript需要花费一些时间才能完全加载

no_cores = no_conn = 1:逐页检索页面,因为某些网站拒绝多次记录的会话。
Rcrawler crawl/scrape password protected website submittable

这本应抓取受密码保护的网页,但是,较大的网站具有防止抓取网页的高级保护,例如reCAPTCHA或其他可检测连续/自动请求的http / javascript规则。因此,如果他们提供API,则最好使用他们的API。

我们仍在努力提供一种命令即可抓取多个网站的功能。到现在为止,您只能分别抓取每个人,或者如果您要从同一网站抓取URL /页面,则可以使用ContentScraper功能

爬行者创建者