首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用隐藏的API抓取HTML data R studio

用隐藏的API抓取HTML data R studio
EN

Stack Overflow用户
提问于 2021-04-03 06:40:05
回答 1查看 84关注 0票数 2

我试图在R studio的帮助下生成最新众筹项目的概述,该网站不允许通常和直接的Rvest (和Selector Gadget)。我想把项目和细节刮到R工作室。该网站有一个隐藏的API:

https://www.geldvoorelkaar.nl/umbraco/api/ProjectApi/GetProjects

我设法向隐藏的API发送了一个POST请求。代码:

代码语言:javascript
复制
url <- "https://www.geldvoorelkaar.nl/umbraco/api/ProjectApi/GetProjects"

response <- POST(url, 
     encode="json",
     add_headers(Authorization = "Token XXXXXXXXX"),
     body = "{\"texts\":[\"A simple string\"]}")

content(response)

但是,我确实收到错误$Message 1“请求包含实体主体但不包含内容类型报头。推断的媒体类型‘应用程序/八位字节流’不支持此资源。”现在。我想回应需要更多的论据?有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-03 19:02:25

我发现下面的方法是有效的。据我所知,一个问题是,所需的编码是form,而不是json。另一个问题是,从您发布的请求中,您没有发送任何正文,这意味着您希望从API返回的信息。因为输入所有这些内容很麻烦,所以我通常会从chrome复制curl命令并将其粘贴到here中,以获得良好的正文格式。

如果你计划经常这样做,我建议在你的请求的标题中放入你的电子邮件地址或其他东西,这样系统管理员就有机会在不需要这种行为的情况下联系你。

代码语言:javascript
复制
require(httr)


headers = c(
  `Email` = 'johndoe@company.com'
)

data = list(
  `Culture` = 'nl-NL',
  `Skip` = '0',
  `MaxTotal` = '18',
  `ProjectGroup` = '',
  `Filters[0][FilterFieldId]` = '6',
  `Filters[0][FilterType]` = 'Textbox',
  `Filters[1][FilterFieldId]` = '10',
  `Filters[1][FilterType]` = 'Checkbox',
  `Filters[2][FilterFieldId]` = '7',
  `Filters[2][FilterType]` = 'Radiobutton',
  `Filters[3][FilterFieldId]` = '5',
  `Filters[3][FilterType]` = 'MinMaxSliderInt',
  `Filters[3][Values][0][Id]` = '1',
  `Filters[3][Values][0][Value]` = '19200',
  `Filters[3][Values][1][Id]` = '2',
  `Filters[3][Values][1][Value]` = '2600000',
  `Filters[4][FilterFieldId]` = '1',
  `Filters[4][FilterType]` = 'MinMaxSliderDouble',
  `Filters[4][Values][0][Id]` = '1',
  `Filters[4][Values][0][Value]` = '1.2',
  `Filters[4][Values][1][Id]` = '2',
  `Filters[4][Values][1][Value]` = '9',
  `Filters[5][FilterFieldId]` = '2',
  `Filters[5][FilterType]` = 'Checkbox',
  `Filters[6][FilterFieldId]` = '3',
  `Filters[6][FilterType]` = 'MinMaxSliderInt',
  `Filters[6][Values][0][Id]` = '1',
  `Filters[6][Values][0][Value]` = '5',
  `Filters[6][Values][1][Id]` = '2',
  `Filters[6][Values][1][Value]` = '120',
  `Filters[7][FilterFieldId]` = '4',
  `Filters[7][FilterType]` = 'Checkbox',
  `Filters[8][FilterFieldId]` = '8',
  `Filters[8][FilterType]` = 'Checkbox',
  `PageId` = '1219',
  `OverviewTypeId` = '3',
  `WhiteLabelCode` = '',
  `OrderBys[0][Id]` = '5',
  `OrderBys[0][Value]` = 'Openstaand bedrag',
  `OrderByDescending` = 'false'
)

res <- httr::POST(url = 'https://www.geldvoorelkaar.nl/umbraco/api/ProjectApi/GetProjects', 
                  httr::add_headers(.headers=headers), 
                  body = data,
                  encode = "form")
result <- content(res)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66926063

复制
相关文章

相似问题

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