我试图使用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) 我rvest在R中用来做一些刮擦.我知道一些HTML和CSS.
我想获得URI的每个产品的价格:
http://www.linio.com.co/tecnologia/celulares-telefonia-gps/
当您在页面上下载时,新项目会加载(当您进行一些滚动时).
到目前为止我做了什么:
Linio_Celulares <- html("http://www.linio.com.co/celulares-telefonia-gps/")
Linio_Celulares %>%
html_nodes(".product-itm-price-new") %>%
html_text()
Run Code Online (Sandbox Code Playgroud)
我得到了我需要的东西,但仅仅是25个第一个元素(默认加载).
[1] "$ 1.999.900" "$ 1.999.900" "$ 1.999.900" "$ 2.299.900" "$ 2.279.900"
[6] "$ 2.279.900" "$ 1.159.900" "$ 1.749.900" "$ 1.879.900" "$ 189.900"
[11] "$ 2.299.900" "$ 2.499.900" "$ 2.499.900" "$ 2.799.000" "$ 529.900"
[16] "$ 2.699.900" "$ 2.149.900" "$ 189.900" "$ 2.549.900" "$ 1.395.900"
[21] "$ 249.900" "$ 41.900" "$ 319.900" "$ 149.900"
Run Code Online (Sandbox Code Playgroud)
问题:如何获取此动态部分的所有元素?
我想,我可以滚动页面,直到所有元素都被加载,然后使用html(URL).但这似乎很多工作(我计划在不同的部分这样做).应该有一个程序化的工作.
任何暗示都是受欢迎的!
我想从这个网页下载数据
数据很容易被删除rvest.
代码可能是这样的:
library(rvest)
library(pipeR)
url <- "http://www.tradingeconomics.com/"
css <- "#ctl00_ContentPlaceHolder1_defaultUC1_CurrencyMatrixAllCountries1_GridView1"
data <- url %>>%
html() %>>%
html_nodes(css) %>>%
html_table()
Run Code Online (Sandbox Code Playgroud)
但是像这样的网页存在问题.
有一个+按钮显示所有国家/地区的数据,但默认值只是50个国家/地区的数据.
因此,如果我使用代码,我可以抓取50个国家/地区的数据.
该+按钮是在人的javascript,所以我想知道是否有在某种程度上R点击按钮,然后刮数据.
我正在尝试废弃网络数据,但第一步需要登录.我已成功登录其他网站,但我在这个网站上发生了一个奇怪的错误.
library("rvest")
library("magrittr")
research <- html_session("https://www.fitchratings.com/")
signin <- research %>%
html_nodes("form") %>%
extract2(1) %>%
html_form() %>%
set_values (
'userName' = "abc",
'password' = "1234"
)
research <- research %>%
submit_form(signin)
Run Code Online (Sandbox Code Playgroud)
当我运行'submit_form'行时,我收到以下错误:
> research <- research %>%
+ submit_form(signin)
Submitting with '<unnamed>'
Error: length(url) == 1 is not TRUE
Run Code Online (Sandbox Code Playgroud)
使用未命名提交是正确的b/c没有为登录按钮分配名称.任何帮助赞赏!
我正在尝试使用rvest包中的html_session()和html_form()来抓取需要身份验证的网页.我发现这个例如由Hadley Wickham提供,但我无法根据我的情况进行自定义.
united <- html_session("http://www.united.com/")
account <- united %>% follow_link("Account")
login <- account %>%
html_nodes("form") %>%
extract2(1) %>%
html_form() %>%
set_values(
`ctl00$ContentInfo$SignIn$onepass$txtField` = "GY797363",
`ctl00$ContentInfo$SignIn$password$txtPassword` = password)
account <- account %>%
submit_form(login, "ctl00$ContentInfo$SignInSecure")
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我找不到要在表单中设置的值,因此我试图给用户并直接传递:set_values("email","password")
我也不知道如何引用提交按钮,所以我尝试了:submit_form(帐号,登录)
我为submit_form函数得到的错误是:名称错误(提交)[[1]]:下标超出范围
如何理解这一点的任何想法表示赞赏.谢谢
我是R的新手,我试图访问互联网上的一些信息,但我遇到了似乎没有关闭的连接问题.如果有人在这里给我一些建议,我将非常感激...
最初我想使用WebChem软件包,理论上可以提供我想要的所有内容,但是当网页中缺少某些输出数据时,WebChem不会从该页面返回任何数据.为了解决这个问题,我已经从包中获取了大部分代码,但稍微改了一下以满足我的需求.这工作得很好,关于第150个惯例,但现在,我虽然什么都没有改变,当我使用命令read_html,我得到的警告信息"关闭不使用的连接4(HTTP:......"虽然这只是一条警告消息,read_html在生成此警告后不返回任何内容.
我写了一个简化的代码,如下所示.这有同样的问题
完全关闭R(甚至重新启动我的电脑)似乎没有什么区别 - 第二次使用代码时会出现警告消息.我可以一次一个地运行查询,在循环之外没有问题,但是一旦我尝试使用循环,错误就会在第二次迭代时再次发生.我试图矢量化代码,并再次返回相同的错误消息.我尝试了showConnections(all = TRUE),但只有stdin,stdout,stderr的连接0-2.我试图找到关闭html连接的方法,但是我不能将url定义为con,而close(qurl)和close(ttt)也不起作用.(返回应用于类"字符"对象的'close'没有适用方法的错误,并且没有适用于类'c('xml_document','xml_node')的对象的'close'的适用方法",分别)
有没有人知道关闭这些连接的方法,这样他们就不会破坏我的日常工作?任何建议都会非常受欢迎.谢谢!
PS:我正在使用R版本3.3.0和RStudio版本0.99.902.
CasNrs <- c("630-08-0","463-49-0","194-59-2","86-74-8","148-79-8")
tit = character()
for (i in 1:length(CasNrs)){
CurrCasNr <- as.character(CasNrs[i])
baseurl <- 'http://chem.sis.nlm.nih.gov/chemidplus/rn/'
qurl <- paste0(baseurl, CurrCasNr, '?DT_START_ROW=0&DT_ROWS_PER_PAGE=50')
ttt <- try(read_html(qurl), silent = TRUE)
tit[i] <- xml_text(xml_find_all(ttt, "//head/title"))
}
Run Code Online (Sandbox Code Playgroud) 我想提交以下表格(点击链接"Kliknite na ..."后出现的表格):http://www1.biznet.hr/HgkWeb/do/extlogon
我必须输入一个名为"OIB"的参数,然后单击"Trazi"提交表单.
这是我的代码:
library(httr)
library(rvest)
sess <- html_session("http://www1.biznet.hr/HgkWeb/do/extlogon")
search_page <- sess %>%
follow_link(1)
form <- html_form(search_page)[[6]]
fill_form <- set_values(form, 'clanica.cla_oib' = '94989605030')
firma_i <- submit_form(search_page, fill_form, submit = 'submit')
Run Code Online (Sandbox Code Playgroud)
最后一行产生错误:
错误:未知提交名称"提交".可能的值:clanica.asTextDatumGasenjaTo,clanica.asTextUdr_id
我不明白为什么rvest在不包含提交名称或类型时将这两个参数识别为提交按钮.为什么rvest不认识提交按钮"Trazi"作为提交参数?简而言之,如何更改填充表单以执行表单?
我使用XML包来获取此URL的链接.
# Parse HTML URL
v1WebParse <- htmlParse(v1URL)
# Read links and and get the quotes of the companies from the href
t1Links <- data.frame(xpathSApply(v1WebParse, '//a', xmlGetAttr, 'href'))
Run Code Online (Sandbox Code Playgroud)
虽然这种方法非常有效,但我使用rvest并且在解析网络时看起来更快XML.我试过html_nodes和html_attrs,但我不能得到它的工作.
我试图从Yelp中删除数据.一步是从每个餐馆提取链接.例如,我搜索纽约的餐馆并获得一些结果.然后我想提取Yelp在第1页上推荐的所有10家餐厅的链接.这是我尝试过的:
library(rvest)
page=read_html("http://www.yelp.com/search?find_loc=New+York,+NY,+USA")
page %>% html_nodes(".biz-name span") %>% html_attr('href')
Run Code Online (Sandbox Code Playgroud)
但代码总是返回'NA'.任何人都可以帮助我吗?谢谢!
我试图拉内容https://www.askebsa.dol.gov/epds/default.asp用两种rvest或RSelenium但当JavaScript页面开始搜索框没有找到指导?将所有这些内容整合到一个简单的CSV文件中会很棒.
之后,从https://www.askebsa.dol.gov/mewaview/View/Index/6219这样的个别文件中提取数据似乎是可能的..但我也很感激这样做的干净建议.谢谢