这是forbidding you访问页面,因为您的头文件中有user-agent
字符串中的NULL
。 (通常是告诉你使用的是什么浏览器,虽然有些浏览器允许用户欺骗其他浏览器的字符串)使用httr
包,你可以设置一个user-agent
字符串:
library(httr)
library(rvest)
url <- "https://www.opm.gov/policy-data-oversight/data-analysis-documentation/federal-employment-reports/historical-tables/total-government-employment-since-1962/"
x <- GET(url, add_headers('user-agent' = 'Gov employment data scraper ([[your email]])'))
在GET
请求裹,add_headers
让你设置你喜欢的任何参数。如果您想要设置这一切,您也可以使用更具体的user_agent
函数代替add_headers
。
在这种情况下,任何user-agent
字符串都可以工作,但它很有礼貌(请参见最后的链接)说出您是谁以及您想要什么。
现在您可以使用rvest
解析HTML并将表格拉出。你需要一种方法来选择相关的表格;看着HTML,我看到它有class = "DataTable"
,但您也可以使用SelectorGadget(请参阅rvest
短片)来查找有效的CSS或XPath选择器。因此,
x %>%
read_html() %>%
html_node('.DataTable') %>%
html_table()
给你一个很好的(如果不是完全干净的)data.frame。
注意:负责任地和合法地刮擦。鉴于OPM是政府资源,它属于公有领域,但许多网络并非如此。请务必阅读任何服务条款,外加this nice post on how to scrape responsibly.
请参阅[https://en.wikipedia.org/wiki/HTTP_403](https://en.wikipedia.org/wiki/HTTP_403)。这不一定是路的尽头,但肯定是路障。 – alistaire