使用 httr R 包发送 POST 请求
Posted
技术标签:
【中文标题】使用 httr R 包发送 POST 请求【英文标题】:Send a POST request using httr R package 【发布时间】:2015-03-08 09:09:17 【问题描述】:当通过 POST 请求发送服务器数据时,我不知道如何模仿浏览器的操作。以下是相关的网址,并附有说明。
(1) http://kenpom.com/
(2) http://kenpom.com/register.php?frompage=1
<form id="login" method="POST" action="handlers/login_handler.php">
<label>E-mail </label><input type="text" name="email" />
<label>Password </label><input type="password" name="password" />
<input type="submit" name="submit" value="Login!" />
(3) http://kenpom.com/team.php?team=Rice
(1) 主页(未登录时选择团队页面,重定向-> (2))
(2) 登录页面(成功登录后重定向到团队特定页面)
(3) 团队特定页面:例如大米
url <- ("http://kenpom.com/team.php?team=Rice")
login <- list(
email = "login",
password = "password"
)
teampage <- POST(url, body = login)
Response [http://kenpom.com/register.php?frompage=1]
Date: 2015-03-07 23:04
Status: 200
Content-Type: text/html
Size: 7.45 kB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<LINK REL=stylesheet TYPE="text/css" HREF="css/rate.css?1414365416">
<TITLE>kenpom.com subscription</TITLE>
最终想使用 rvest 包抓取一些信息,但在尝试抓取时得到空结果:http://kenpom.com/register.php?frompage=1
【问题讨论】:
【参考方案1】:试试
library(httr)
login <- list(
email = "login",
password = "password",
submit = "Login!"
)
res <- POST("http://kenpom.com/handlers/login_handler.php", body = login, encode = "form", verbose())
team <- GET("http://kenpom.com/team.php?team=Rice", verbose())
【讨论】:
列表中缺少逗号(抱歉无法编辑,仅添加逗号太短,需要6个字符)以上是关于使用 httr R 包发送 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章
R爬虫总结 | RCurl/httr(请求)→XML/xml2/rvest(解析)
如何使用SOCKET 发送HTTP1.1 GET POST请求包