首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Web抓取基于IIS的网站

Web抓取基于IIS的网站
EN

Stack Overflow用户
提问于 2016-02-29 02:18:02
回答 2查看 8K关注 0票数 6

我正在使用R从本站上抓取一张桌子。

我正在使用库rvest

代码语言:javascript
运行
复制
#install.packages("rvest", dependencies = TRUE) 
library(rvest) 
OPMpage <- read_html("https://www.opm.gov/policy-data-oversight/data-analysis-documentation/federal-employment-reports/historical-tables/total-government-employment-since-1962/")

我收到这个错误:

Open.connection中的错误(x,"rb"):HTTP错误403。

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2016-02-29 04:25:36

这是访问页面的禁止你,因为头部的user-agent字符串中包含了NULL。(通常,它是一个字符串,用来说明您使用的浏览器是什么,尽管有些浏览器允许用户欺骗其他浏览器。)使用httr包,您可以设置一个user-agent字符串:

代码语言:javascript
运行
复制
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选择器。因此

代码语言:javascript
运行
复制
x %>% 
    read_html() %>% 
    html_node('.DataTable') %>% 
    html_table()

给你一个漂亮的(如果不是完全干净的) data.frame。

注:负责地、合法地刮着。鉴于OPM是一个政府来源,它是在公共领域,但这不是对许多网络的情况。总是阅读任何服务条款,加上这篇关于如何负责任的文章。

票数 13
EN

Stack Overflow用户

发布于 2016-02-29 02:52:30

您的read_htmlhtml格式是正确的:

代码语言:javascript
运行
复制
library(rvest)
lego_movie <- read_html("http://www.imdb.com/title/tt1490017/")
lego_movie <-      html("http://www.imdb.com/title/tt1490017/")

但是你得到了403,因为你想刮的页面或者它的一部分不允许刮擦。

您可能需要看到vignette("selectorgadget"),并将selectorgadget与rvest结合使用:

http://blog.rstudio.org/2014/11/24/rvest-easy-web-scraping-with-r/

但是,更有可能的是,这不是一页注定要被刮掉的东西。不过,我相信巴拉克·奥巴马和新任美国首席数据科学家DJ·帕蒂尔(DJ Patil )最近推出了一款中央枢纽,以获取这类美国政府数据,以便于输入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35690914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档