- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法解决 R 中的这个问题,如果您能在这里给我一些建议,我将不胜感激。
我正在尝试从 https://www.investing.com/rates-bonds/spain-5-year-bond-yield-historical-data 中抓取历史债券 yield 数据仅供个人使用(当然)。
此处提供的解决方案非常有效,但只能抓取每日数据的前 24 个时间戳: webscraping data tables and data from a web page
我想要实现的是更改日期范围以抓取更多历史数据。基于SelectorGadget工具,日期范围的输入表单id调用//*[(@id = "widgetFieldDateRange")]
我也曾尝试使用以下代码行来更改日期值但没有成功:
library(rvest)
url1 <- "https://www.investing.com/rates-bonds/spain-5-year-bond-yield-historical-data" #Spain 5yr yield
session <- html_session(url1)
pgform <- html_form(session)[[1]]
pgform$fields[[3]]$value <- "01/01/2010 - 09/10/2020"
result <- submit_form(session, pgform)
问题:知道如何正确提交新日期范围并检索扩展时间序列吗?
非常感谢您的帮助!
PS:很遗憾,URL 不会根据日期范围发生变化。
最佳答案
您可以直接执行 POST 请求:
POST https://www.investing.com/instruments/HistoricalDataAjax
您需要从请求中所需的页面中抓取一些信息:
div
标签中的 pair_ids
属性.instrumentHeader
类中 h2
标签的 header 值完整代码:
library(rvest)
library(httr)
startDate <- as.Date("2020-06-01")
endDate <- Sys.Date() #today
userAgent <- "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
mainUrl <- "https://www.investing.com/rates-bonds/spain-5-year-bond-yield-historical-data"
s <- html_session(mainUrl)
pair_ids <- s %>%
html_nodes("div[pair_ids]") %>%
html_attr("pair_ids")
header <- s %>% html_nodes(".instrumentHeader h2") %>% html_text()
resp <- s %>% rvest:::request_POST(
"https://www.investing.com/instruments/HistoricalDataAjax",
add_headers('X-Requested-With'= 'XMLHttpRequest'),
user_agent(userAgent),
body = list(
curr_id = pair_ids,
header = header[[1]],
st_date = format(startDate, format="%m/%d/%Y"),
end_date = format(endDate, format="%m/%d/%Y"),
interval_sec = "Daily",
sort_col = "date",
sort_ord = "DESC",
action = "historical_data"
),
encode = "form") %>%
html_table
print(resp[[1]])
输出:
Date Price Open High Low Change %
1 Oct 09, 2020 -0.339 -0.338 -0.333 -0.361 2.42%
2 Oct 08, 2020 -0.331 -0.306 -0.306 -0.338 7.47%
3 Oct 07, 2020 -0.308 -0.323 -0.300 -0.324 -0.65%
4 Oct 06, 2020 -0.310 -0.288 -0.278 -0.319 7.27%
5 Oct 05, 2020 -0.289 -0.323 -0.278 -0.331 -10.39%
6 Oct 03, 2020 -0.322 -0.322 -0.322 -0.322 1.42%
7 Oct 02, 2020 -0.318 -0.311 -0.302 -0.320 5.65%
.....................................................
.....................................................
96 Jun 08, 2020 -0.162 -0.152 -0.133 -0.173 13.29%
97 Jun 05, 2020 -0.143 -0.129 -0.127 -0.154 13.49%
98 Jun 04, 2020 -0.126 -0.089 -0.063 -0.148 38.46%
99 Jun 03, 2020 -0.091 -0.120 -0.087 -0.128 -35.00%
100 Jun 02, 2020 -0.140 -0.148 -0.137 -0.166 14.75%
101 Jun 01, 2020 -0.122 -0.140 -0.101 -0.150 -17.57%
如果您替换 mainUrl
变量的值,这也适用于任何页面,例如 this one
关于rvest 在 R 中使用表单输入进行 Webscraping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64298886/
我想提取下面页面中的表格 https://www.mcxindia.com/market-data/spot-market-price 我已经尝试过 rvest 和 RCurl,但在这两种情况下,下载
我不确定如何描述问题,因此我将直接进入示例。 我有一个 HTML 文档( html_doc ),如下所示: A X Y B
我正试图在比赛列表中抓取足球运动员效力的俱乐部(例如,在 http://www.transfermarkt.com/alan-shearer/leistungsdatendetails/spieler
我正在尝试从需要提交表单的网站中抓取结果,为此我使用 rvest 包。 运行以下命令后代码失败: require("rvest") require(dplyr) require(XML) BasicU
html_text() 方法(来自 R Package rvest)连接节点的文本和它的所有子节点。我想提取仅父亲的文本。 对于以下示例,html_text() 给出HELLO GOODBYE。 我只
我正在尝试从需要提交表单的网站中抓取结果,为此我使用 rvest 包。 运行以下命令后代码失败: require("rvest") require(dplyr) require(XML) BasicU
我正在尝试抓取 irregular table来自维基百科,使用 rvest。该表具有跨多行的单元格。 documentation for html_table 明确指出这是一个限制。我只是想知道是否
我的情况:我有一个很长(2 万行)的 URL 列表,我需要从中抓取特定数据元素以进行分析。出于本示例的目的,我正在寻找一个名为“sol-num”的特定字段,它是招标编号。使用以下函数,我可以获取 Fe
我正在尝试通过 URL 列表循环抓取一些 IMDB 数据。不幸的是,我的输出并不完全是我所希望的,更不用说将它存储在数据帧中了。 我得到的网址是 library(rvest) topmovies %
我正在使用 RVest 抓取博客文本,并且正在努力找出一种排除特定节点的简单方法。下面拉取文本: AllandSundry_test % html_node("#contentmiddle") %>%
我一直在尝试从这个网址使用inf“rvest”包抓取股票市场:http://finans.mynet.com/borsa/canliborsa/#A这需要注册。我创建了虚拟帐户供您尝试。下面的用户名和
我正在对这个网站进行网络抓取: http://www.falabella.com.pe/falabella-pe/category/cat40536/Climatizacion?navAction=p
在这个问题上花了很多时间并查看了可用的答案之后,我想继续提出一个新问题来解决我使用 R 和 rvest 进行网络抓取的问题。我已尝试完全列出问题以尽量减少问题 问题我正在尝试从 session 网页中
我正在尝试抓取下面列出的以下网站。我尝试通过使用 rvest 和下面的代码来做到这一点。 我的尝试是尝试复制我在 Google Chrome 中为下载按钮找到的 PUT。我不确定我做错了什么。我的 r
我已经成功地抓取了我想要的数据(在 SO 用户的帮助下),但是我遗漏了每个抓取表中的数据代表谁的关键。所以我试图使用 mutate 添加一个名为 player 的字段,它与 player[[j]] 相
我的目标是使用 library(tm)一个相当大的 word 文档上的工具包。 word 文档有合理的排版,所以我们有 h1对于主要部分,一些 h2和 h3副标题。我想比较每个部分并对其进行文本挖掘(
我正在尝试使用 rvest 包抓取在议会中举行的部分演讲。使用 css 选择器或 chrome 的检查器工具为我提供了一个选择器,但是我无法检索预期的(任何)数据。据我所知,该站点也不是基于 java
我正在尝试下载 png通过 R 来自安全站点的图像。 为了访问我使用的安全站点 Rvest效果很好。 到目前为止,我已经提取了 png 的 URL。图片。 如何使用 rvest 下载此链接的图像? r
我正在尝试写一个爬虫来下载一些信息,类似于this Stack Overflow post.答案对于创建填写的表单很有用,但是当提交按钮不是表单的一部分时,我正在努力寻找一种提交表单的方法。这是一个例
我正面临网络抓取问题。我打算在 tripadvisor 上收集一些评论。我想使用 rvest 并获得所有语言的评论。来自 this questions我知道一种可能的方法是在 url 的末尾使用 ?f
我是一名优秀的程序员,十分优秀!