在 R 中抓取受密码保护的网站

2023-11-23

我正在尝试从 R 中受密码保护的网站中抓取数据。通过阅读,httr 和 RCurl 包似乎是使用密码身份验证进行抓取的最佳选择(我还研究了 XML 包)。

我试图抓取的网站如下(您需要一个免费帐户才能访问完整页面):http://subscribers.footballguys.com/myfbg/myviewprojections.php?projector=2

这是我的两次尝试(用我的用户名替换“用户名”,用我的密码替换“密码”):

#This returns "Status: 200" without the data from the page:
library(httr)
GET("http://subscribers.footballguys.com/myfbg/myviewprojections.php?projector=2", authenticate("username", "password"))

#This returns the non-password protected preview (i.e., not the full page):
library(XML)
library(RCurl)
readHTMLTable(getURL("http://subscribers.footballguys.com/myfbg/myviewprojections.php?projector=2", userpwd = "username:password"))

我看过其他相关帖子(下面的链接),但不知道如何将他们的答案应用于我的案例。

如何使用 R 从需要 cookie 的 SSL 页面下载压缩文件

如何在 R 中抓取受保护的页面(https 链接)(使用 XML 包中的 readHTMLTable)?

从受密码保护的站点读取信息

R - RCurl 从受密码保护的网站抓取数据

http://www.inside-r.org/questions/how-scrape-data-password-protected-https-website-using-r-hold


您可以使用RSelenium。我用的是dev版本,你可以运行phantomjs没有 Selenium 服务器。

# Install RSelenium if required. You will need phantomjs in your path or follow instructions
# in package vignettes
# devtools::install_github("ropensci/RSelenium")
# login first
appURL <- 'http://subscribers.footballguys.com/amember/login.php'
library(RSelenium)
pJS <- phantom() # start phantomjs
remDr <- remoteDriver(browserName = "phantomjs")
remDr$open()
remDr$navigate(appURL)
remDr$findElement("id", "login")$sendKeysToElement(list("myusername"))
remDr$findElement("id", "pass")$sendKeysToElement(list("mypass"))
remDr$findElement("css", ".am-login-form input[type='submit']")$clickElement()

appURL <- 'http://subscribers.footballguys.com/myfbg/myviewprojections.php?projector=2'
remDr$navigate(appURL)
tableElem<- remDr$findElement("css", "table.datamedium")
res <- readHTMLTable(header = TRUE, tableElem$getElementAttribute("outerHTML")[[1]])
> res[[1]][1:5, ]
Rank             Name Tm/Bye Age Exp Cmp Att  Cm%  PYd Y/Att PTD Int Rsh  Yd TD FantPt
1    1   Peyton Manning  DEN/4  38  17 415 620 66.9 4929  7.95  43  12  24   7  0 407.15
2    2       Drew Brees   NO/6  35  14 404 615 65.7 4859  7.90  37  16  22  44  1 385.35
3    3    Aaron Rodgers   GB/9  31  10 364 560 65.0 4446  7.94  33  13  52 224  3 381.70
4    4      Andrew Luck IND/10  25   3 366 610 60.0 4423  7.25  27  13  62 338  2 361.95
5    5 Matthew Stafford  DET/9  26   6 377 643 58.6 4668  7.26  32  19  34 102  1 358.60

最后当你完成关闭时phantomjs

pJS$stop()

如果您想使用传统浏览器,例如 Firefox(如果您想坚持使用 CRAN 上的版本),您可以使用:

RSelenium::startServer()
remDr <- remoteDriver()
........
........
remDr$closeServer()

代替相关的phantomjs calls.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中抓取受密码保护的网站 的相关文章

随机推荐

  • 为什么不调用 Destroy?

    鉴于以下 Delphi 代码 Foo is Free d on FormClose but TFoo Destroy没有被调用 因此Bar is not Freed 导致内存泄漏 我是否在这里错过了一些东西 或者 Foo Free 在某个时
  • 定义和分配属性之间的区别

    为对象分配属性和定义属性有什么区别 哪一个更好以及如何实现 This Object defineProperty obj p propDesc 或者简单地 obj p someValue Object defineProperty让您可以设
  • 使用 $.post 将对象集合传递到 MVC 控制器

    我们正在尝试使用 json 和 jQuery post 函数将对象集合从我们的页面发送到您的控制器 MVC 3 下面是我们的 js 代码以及控制器和对象定义 问题是 当对象被适当地发送到我们的控制器时 它的成员变量没有被填充 Coords
  • jquery 调用命名函数的点击事件

    我有一个 jQueryonClick处理程序 用匿名函数编写 如下所示 selector on click function do something 我将概括在命名函数中提取逻辑的匿名函数 这促使我执行以下操作 selector on c
  • 链接批处理脚本时出现意外的双 & 符号/管道行为

    我的 foo bat 文件 exit b 1 我在cmd提示符下执行的内容 foo bat echo OK Result exit b 1 OK 然而 当我使用双管时 不会出现回声 foo bat echo OK Result exit b
  • 您将如何编写一种简单的编程语言? [复制]

    这个问题在这里已经有答案了 可能的重复 设计简单编程语言的方法 学习编写编译器 我想编写一种语法类似于 QBasic 但更简单的编程语言 我希望它适合初学者 它的简单性将鼓励有抱负的程序员不要放弃并让他们对编程产生兴趣 例如 代替 QBas
  • 如何确定子例程是否正在使用调用者的 eval 内调用?

    我仍在学习 Perl 我的任务是使用caller确定是否正在从某个子程序调用eval在任何更高的级别 我应该想出一些代码来测试它并打印Yes如果它来自eval or No如果不是的话 我找不到任何关于如何使用的好例子caller在网上 想知
  • 如何在 Windows XP 中的可执行文件上设置处理器关联?

    我有一个带有第三方应用程序的四核系统 偶尔会旋转多个进程 始终是相同的可执行文件 但有多个实例 并占用 100 的 CPU 时间 我还在同一个机器上运行了几个 Web 服务 IIS 和第三方 所有核心都繁忙的问题是 它会使第三方 Web 服
  • Visual Studio 2015 测试资源管理器看不到 XUnit dnx 特征

    Visual Studio 2015 测试资源管理器无法识别我的测试特征 当我将其添加到 DNX 项目中的测试时 Trait Category Test 该测试仍然显示在测试资源管理器中的 无特征 组下 按特征对测试进行分组时 看起来这已经
  • 避免“使用未分配的局部变量”错误

    我有两种与此等效的方法 请原谅这个人为的示例 public void WithResource Action
  • 从流启动进程

    我有一个包含 PDF 文件的内存流 是否可以在不保存到硬盘的情况下查看 PDF Process Start 仅采用路径而不采用流 谢谢 只能通过用 C 实现您自己的伪文件系统 以某种方式将其安装为 Windows 中的磁盘 并让它拦截打开的
  • 如何在家庭环境中使用化石 (DVCS)?

    我正在尝试将化石作为我的新版本控制系统 因为我是一个致力于小型项目的孤独开发人员 我开始测试化石 但遇到了一个 可能是主要的新手 问题 如何推送或拉取到另一个目录 这在 Hg 上很容易 Fossil pull 或push 命令需要URL 而
  • 带有 libxml 的 Swift 框架

    我有使用 KissXML Objective C 库的 Swift Framework 项目 KissXML 内部使用 libxml 当我构建 xcode 项目 Xcode 6 beta 5 时 出现以下错误 error
  • set_union 与多集容器?

    当一个或两个输入容器是具有重复对象的多重集时 算法 std set union 的返回是什么 傻瓜会迷路吗 我们假设例如 multiset
  • 使用 Smtp.mail.microsoftonline.com 发送电子邮件

    上下文 我们是一家小公司 没有 Exchange Server 或任何专用服务器 但我们仍然需要拥有 发送电子邮件 我们决定使用微软在线服务 MOS 目标 我们有一个 Web 服务器 带有 IIS 6 0 的 Windows Server
  • 自定义 Laravel Passport 响应未经身份验证

    目前 我使用 Laravel 中使用护照功能制作的 api 具有登录 注册 更新和删除功能 使用此 api 插入数据和从数据库获取数据一切正常 现在我想知道 当令牌过期时 如何自定义 api 的响应 令牌的过期也正常工作 它会自动显示此消息
  • 如何检查 Android SQLite 数据库中是否存在表?

    我有一个android应用程序 需要检查数据库中是否已有记录 如果没有 则处理一些事情并最终插入它 如果数据确实存在 则只需从数据库中读取数据 我正在使用 SQLiteOpenHelper 的子类来创建并获取 SQLiteDatabase
  • XML 声明标签区分大小写吗?

    我有一个可能非常简单 愚蠢的问题 但我在任何地方都找不到答案 我需要对此非常确定 我有来自不同供应商的各种 XML 文件 其中一个供应商向我提供了一个 XML 文件 其中包含日语字符 最初 我在处理 XML 文件时遇到了麻烦 我正在使用微软
  • 具有多个捕捉点的 CoordinatorLayout

    这里我有一个相当复杂的动画 可以使用以下方法以简单的方式解决 我相信 协调器布局 它有3个状态 初始 左屏幕 标题视图完全显示 橙色 背景 工具栏 灰色圆角矩形 实际上是那里的照片 加上下面的一些其他视图 TextViews RatingB
  • 在 R 中抓取受密码保护的网站

    我正在尝试从 R 中受密码保护的网站中抓取数据 通过阅读 httr 和 RCurl 包似乎是使用密码身份验证进行抓取的最佳选择 我还研究了 XML 包 我试图抓取的网站如下 您需要一个免费帐户才能访问完整页面 http subscriber