我需要帮助来从下面的网站上抓取数据。我复制了这里的链接https://msperlin.github.io/pafdR/importingInternet.html#accessing-data-from-web-pages-webscraping的工作方式以降低费率表,但我仅得到清单0。有人可以帮我吗?
library(rvest)
# set url and xpath
my.url <- 'https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yield'
my.xpath <- '//*[@id="t-content-main-content"]/div/table/tbody/tr/td/div/table'
# get nodes from html
out.nodes <- html_nodes(read_html(my.url),
xpath = my.xpath)
# get table from nodes (each element in
# list is a table)
df <- html_table(out.nodes)
df
答案 0 :(得分:2)
通常最好不要使用非常精确的XPath语句,因为页面的结构可能会更改,并且有时在浏览器源代码中或开发人员工具中看起来正确的内容(浏览器在读取HTML时会修改HTML)。
使用上述开发人员工具(在这种情况下,通过Firefox但Chrome shld也可以正常工作),表格附近的检查元素显示:
我们可以坚持使用CSS选择器语法并这样做:
library(rvest)
pg <- read_html("https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yield")
html_node(pg, "table.t-chart") %>%
html_table()
## Date 1 mo 3 mo 6 mo 1 yr 2 yr 3 yr 5 yr 7 yr 10 yr 20 yr 30 yr
## 1 10/01/18 2.13 2.23 2.40 2.60 2.82 2.90 2.96 3.04 3.09 3.18 3.24
## 2 10/02/18 2.14 2.23 2.41 2.61 2.82 2.88 2.94 3.01 3.05 3.14 3.20
## 3 10/03/18 2.15 2.23 2.41 2.62 2.85 2.94 3.02 3.10 3.15 3.24 3.30
## 4 10/04/18 2.16 2.22 2.42 2.63 2.87 2.97 3.05 3.14 3.19 3.29 3.35
## 5 10/05/18 2.15 2.23 2.41 2.64 2.88 2.99 3.07 3.18 3.23 3.34 3.40
在这种情况下,CSS选择器更加简单(并非总是如此),但是您也可以使用XPath查询:
html_node(pg, xpath = ".//table[@class='t-chart']")