È forbidding you dall'accesso alla pagina perché hai NULL
nella stringa user-agent
delle intestazioni. (. Normalmente è una stringa dicendo che browser che si sta utilizzando, anche se alcuni browser consentono agli utenti di spoof altri browser) Usando il pacchetto httr
, è possibile impostare una stringa 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]])'))
Avvolto in una richiesta GET
, add_headers
lascia imposti i parametri che ti piacciono È inoltre possibile utilizzare la funzione più specifica user_agent
al posto di add_headers
, se è tutto ciò che si desidera impostare.
In questo caso qualsiasi stringa user-agent
funzionerà, ma è educata (vedere il collegamento alla fine) per dire chi sei e cosa vuoi.
Ora è possibile utilizzare rvest
per analizzare l'HTML e tirare fuori la tabella. Avrai bisogno di un modo per selezionare la tabella pertinente; guardando l'HTML, ho visto che aveva class = "DataTable"
, ma puoi anche usare SelectorGadget (vedi le vignette rvest
) per trovare un selettore CSS o XPath valido. Così
x %>%
read_html() %>%
html_node('.DataTable') %>%
html_table()
ti dà un bello (se non totalmente pulito) data.frame.
Nota: Raschiare in modo responsabile e legale. Dato che l'OPM è una fonte governativa, è di dominio pubblico, ma non è il caso di gran parte del web. Leggere sempre tutti i termini di servizio, più this nice post on how to scrape responsibly.
Vedere [https://en.wikipedia.org/wiki/HTTP_403](https://en.wikipedia.org/wiki/HTTP_403). Non è necessariamente la fine della strada, ma certamente un posto di blocco. – alistaire