使用RCurl中的getURL将查询参数设置为API

时间:2015-08-02 04:55:00

标签: r web-scraping rcurl

我正在尝试使用R和Hotwire Hotels API: 以下是原始请求:

getURL(http://api.hotwire.com/v1/deal/hotel?dest=chicago&apikey=##############&format=JSON&limit=50&startdate=08/27/2015&enddate=08/28/2015)

但是,当我尝试将'startdate and ‘enddate作为参数传递时(见下文),它似乎没有选择日期。

getURL ("http://api.hotwire.com/v1/deal/hotel?dest=chicago&apikey=##############&format=JSON&limit=50",     
 httpheader=list(startdate=c_in,enddate=c_out))

非常感谢您的帮助。

Subra

2 个答案:

答案 0 :(得分:3)

您应该尝试切换到httr,因为它会使所有网络呼叫更加清晰(并且API文档说日期参数位于查询部分中):

library(httr)

c_in <- '08/02/2015'
c_out <- '08/05/2015'

hotwire_api_url <- "http://api.hotwire.com/v1/deal/hotel"

res <- GET(hotwire_api_url,
           query=list(dest="chicago",
                      apikey="########",
                      format="JSON",
                      limit=50,
                      startdate=c_in,
                      enddate=c_out))

# since return val is "text/x-json"

recs <- jsonlite::fromJSON(content(res, as="text"))

head(recs$Result)
##                   FoundDate CurrencyCode NightDuration    EndDate
## 1 2015-08-01T23:38:48-07:00          USD           3.0 08/05/2015
## 2 2015-08-01T23:38:04-07:00          USD           3.0 08/05/2015
## 3 2015-08-01T23:38:47-07:00          USD           3.0 08/05/2015
## 4 2015-08-01T23:38:48-07:00          USD           3.0 08/05/2015
## 5 2015-08-01T23:38:36-07:00          USD           3.0 08/05/2015
## 6 2015-08-01T23:38:18-07:00          USD           3.0 08/05/2015
##                                 Headline IsWeekendStay Price  StartDate
## 1    Naperville 5 Star Hotel, $143/night         false 143.0 08/02/2015
## 2     Northbrook 4 Star Hotel, $67/night         false  67.0 08/02/2015
## 3     Chicago 4.5 Star Hotel, $208/night         false 208.0 08/02/2015
## 4 Schiller Park 4 Star Hotel, $140/night         false 140.0 08/02/2015
## 5     Chicago 4.5 Star Hotel, $142/night         false 142.0 08/02/2015
## 6     Naperville 4 Star Hotel, $98/night         false  98.0 08/02/2015
##                                                                                                                                                                                                                 Url
## 1     http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjE4NTAzOjE0MDUwOjUuMDoxNDMuMDpZOlk6WQ--&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 2         http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjM1MTEwOjg3NTQ3OjQuMDo2Ny4wOlk6WTpZ&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 3 http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjQ4Njk6ODc1NDU6NC41OjIwOC4wMDAwMjpZOlk6WQ--&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 4     http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjM1MTI3Ojg5ODg5OjQuMDoxNDAuMDpZOlk6WQ--&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 5         http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjQ4Njk6ODc5NTE6NC41OjE0Mi4wOlk6WTpZ&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
## 6         http://www.hotwire.com/hotel/superPage.jsp?encDealHash=MTAwOjE4NTAzOjE0MDUwOjQuMDo5OC4wOlk6WTpZ&rs=20500&xid=x-103&wid=w-3&rid=r-69820702248&startDate=08/02/2015&endDate=08/05/2015&bid=B311402&sid=S298
##            City CountryCode NeighborhoodLatitude NeighborhoodLongitude
## 1    Naperville          US              41.8008              -88.1328
## 2    Northbrook          US              42.1138              -87.8601
## 3       Chicago          US              41.8989              -87.6243
## 4 Schiller Park          US              41.9334              -87.9029
## 5       Chicago          US              41.8549              -87.6221
## 6    Naperville          US              41.8008              -88.1328
##                                   Neighborhood StarRating StateCode
## 1                           Lisle - Naperville        5.0        IL
## 2         Northbrook - Glenview - Mt. Prospect        4.0        IL
## 3         Magnificent Mile North - Water Tower        4.5        IL
## 4                O'Hare Intl Airport ORD South        4.0        IL
## 5 McCormick Place - South Loop - Soldier Field        4.5        IL
## 6                           Lisle - Naperville        4.0        IL

答案 1 :(得分:2)

httpheader param用于传递标题,而不是查询参数

使用RCurl::getForm

getForm("http://httpbin.org/get", .params = c(q = "ham"))

或使用httr::GET

GET("http://httpbin.org/get", query = list(q = "ham"))