【问题标题】:Rcrawler - How to crawl account/password protected sites?Rcrawler - 如何爬取受帐户/密码保护的网站?
【发布时间】:2018-07-09 10:56:39
【问题描述】:

我正在尝试抓取和抓取网站的表格。我有一个网站帐户,我发现 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"))

我确信我上面的代码是错误的,但我希望它能让您了解我想要做什么。

【问题讨论】:

    标签: r web-scraping web-crawler web-mining rcrawler


    【解决方案1】:

    要在 R 中抓取或抓取受密码保护的网站,更准确地说是基于 HTML 的身份验证n,您需要使用 Web 驱动程序来刺激登录会话,幸运的是,这是可能的,因为 Rcrawler v0.1.9,它实现了 phantomjs 网络驱动程序(浏览器,但没有图形界面)。

    在下面的例子中会尝试登录一个博客网站

     library(Rcrawler)
    

    下载并安装网络驱动

    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") 
    

    【讨论】:

    • 非常感谢您的回答....使用 Phantomjs 看起来是一个有趣的想法。我不再从事需要创造性 Rcrawler 解决方案的项目,但我相信 phantomjs 的挑战将是他们的网络安全。但如果它允许它运行,它可能是一个了不起的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多