我试图使用rvest来蜘蛛网页,该网页需要在表单上登录电子邮件/密码.
rm(list=ls())
library(rvest)
### Trying to sign into a form using email/password
url <-"http://www.perfectgame.org/" ## page to spider
pgsession <-html_session(url) ## create session
pgform <-html_form(pgsession)[[1]] ## pull form from session
set_values(pgform, `ctl00$Header2$HeaderTop1$tbUsername` = "myemail@gmail.com")
set_values(pgform, `ctl00$Header2$HeaderTop1$tbPassword` = "mypassword")
submit_form(pgsession,pgform,submit=`ctl00$Header2$HeaderTop1$Button1`)
Run Code Online (Sandbox Code Playgroud)
这给我以下错误信息:
Error in submit_request(form, submit) :
Run Code Online (Sandbox Code Playgroud)
找不到对象'ctl00 $ Header2 $ HeaderTop1 $ Button1'
如果我在没有指定submit参数的情况下提交表单,我会得到:
Submitting with 'ctl00$Header2$HeaderTop1$Button1'
Error in function (type, msg, asError = TRUE) : <url> malformed
Run Code Online (Sandbox Code Playgroud)
我也尝试将参数直接传递给httr,如本问题所述:如何在R中发布一个简单的HTML表单?,但"submit"参数不接受提交按钮,使用向后引号(``),引号或没有任何引号:
library(httr)
url <- "http://www.perfectgame.org/Rankings/Players/Default.aspx?gyear=2015&num=500"
fd <- list(
submit = `ctl00$Header2$HeaderTop1$Button1`, …Run Code Online (Sandbox Code Playgroud) 由于在R中很容易,我使用rvest包来解析HTML以从网站中提取信息.
我想知道在请求期间我的用户代理是什么(如果有的话),因为用户代理被分配到互联网浏览器或有办法以某种方式设置它?
我在HTML中打开会话和提取信息的代码如下:
library(rvest)
se <- html_session( "http://www.wp.pl" ) %>%
html_nodes("[data-st-area=Glonews-mozaika] li:nth-child(7) a") %>%
html_attr( name = "href" )
Run Code Online (Sandbox Code Playgroud)