使用隐藏的API清除HTML数据R工作室



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

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

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

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]";请求包含实体正文,但没有内容类型标头。此资源不支持推断的媒体类型"application/八位位组流"现在我想这种回应需要更多的论据?知道吗?

我发现以下内容有效。据我所知,一个问题是,所需的编码是表单,而不是json。另一个问题是,从你发布的请求中,你没有发送任何正文,这意味着你想从API得到什么信息。由于键入所有这些内容很痛苦,我通常会从chrome中复制curl命令并将其粘贴到此处,以使正文格式良好。

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

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)

最新更新