我正在尝试抓取和刮擦网站的表格。我在该网站上有一个帐户,发现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"))
我确信上面的代码是错误的,但是我希望它能使您对我想做的事情有所了解。
答案 0 :(得分:0)
要在R中抓取或抓取受密码保护的网站,更准确地说,是基于HTML的身份验证 n,您需要使用网络驱动程序来激发登录会话。从 Rcrawler v0.1.9 (实现了 phantomjs )网络驱动程序(浏览器但没有图形界面)开始,这是可能的。
在下面的示例中,将尝试登录博客网站
library(Rcrawler)
下载并安装Web驱动程序
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,因为许多网站拒绝一个用户进行多个会话。 通过设置Obeyrobots = TRUE,保持合法并尊重robots.txt
您访问浏览器功能,例如:
br$session$getUrl()
br$session$getTitle()
br$session$takeScreenshot(file = "image.png")