我正在使用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
有什么想法?还在等待创作者的回复。
答案 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:逐页检索页面,因为某些网站拒绝多次记录的会话。
这本应抓取受密码保护的网页,但是,较大的网站具有防止抓取网页的高级保护,例如reCAPTCHA或其他可检测连续/自动请求的http / javascript规则。因此,如果他们提供API,则最好使用他们的API。
我们仍在努力提供一种命令即可抓取多个网站的功能。到现在为止,您只能分别抓取每个人,或者如果您要从同一网站抓取URL /页面,则可以使用ContentScraper功能
爬行者创建者