Es ist forbidding you vom Zugriff auf die Seite, weil Sie NULL
in der user-agent
Zeichenfolge Ihrer Header haben. (. Es ist normalerweise eine Zeichenfolge zu sagen, welchen Browser Sie verwenden, obwohl einiger Browser Benutzer lassen fälschen anderen Browser) Mit dem httr
Paket können Sie eine user-agent
Zeichenfolge festgelegt:
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]])'))
Eingehüllt in einer GET
Anfrage add_headers
lassen Sie setzen die Parameter, die Sie mögen. Sie könnten auch die spezifischere user_agent
Funktion anstelle von add_headers
verwenden, wenn das alles ist, was Sie einstellen möchten.
In diesem Fall funktioniert jeder String user-agent
, aber es ist höflich (siehe den Link am Ende) zu sagen, wer du bist und was du willst.
Jetzt können Sie rvest
verwenden, um das HTML zu analysieren und die Tabelle herauszuziehen. Sie müssen eine Möglichkeit haben, die relevante Tabelle auszuwählen. Beim Betrachten des HTML sah ich, dass es class = "DataTable"
hatte, aber Sie können auch das SelectorGadget (siehe Vignetten rvest
) verwenden, um einen gültigen CSS- oder XPath-Selektor zu finden. Also
x %>%
read_html() %>%
html_node('.DataTable') %>%
html_table()
gibt Ihnen einen schönen (wenn nicht völlig sauber) data.frame.
Hinweis: Kratzen verantwortungsbewusst und rechtlich. Angesichts der Tatsache, dass OPM eine staatliche Quelle ist, ist es in der Öffentlichkeit, aber das ist nicht der Fall mit einem Großteil des Webs. Lesen Sie immer die Nutzungsbedingungen, plus this nice post on how to scrape responsibly.
Siehe [https://en.wikipedia.org/wiki/HTTP_403](https://de.wikipedia.org/wiki/HTTP_403]. Es ist nicht unbedingt das Ende der Straße, aber sicherlich eine Straßensperre. – alistaire