提问人:Tasos Dalis 提问时间:7/9/2018 最后编辑:Tasos Dalis 更新时间:11/16/2018 访问量:1245
Rcrawler - 如何抓取受帐户/密码保护的网站?
Rcrawler - How to crawl account/password protected sites?
问:
我正在尝试抓取和抓取网站的表格。我在网站上有一个帐户,我发现 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"))
我确信我上面的代码是错误的,但我希望它能让您了解我想做什么。
答:
1赞
SalimK
11/16/2018
#1
要在 R 中抓取或抓取受密码保护的网站,更准确地说是基于 HTML 的 Authentication,您需要使用 Web 驱动程序来刺激登录会话,幸运的是,这是可能的,因为 Rcrawler v0.1.9 实现了 phantomjs Web 驱动程序(浏览器但没有图形界面)。
在以下示例中将尝试登录一个博客网站
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 来保持合法并尊重机器人 .txt
您可以访问浏览器功能,例如:
br$session$getUrl()
br$session$getTitle()
br$session$takeScreenshot(file = "image.png")
评论
0赞
Tasos Dalis
1/7/2019
非常感谢您的回答......使用 Phantomjs 看起来是一个有趣的想法。我不再从事需要创造性 Rcrawler 解决方案的项目,但我相信 phantomjs 的挑战将是它们的网络安全。但是,如果它允许它运行,它可能是一个了不起的解决方案。
评论