全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1369 2
2018-09-01
我自定义一个函数,使用POST方式请求获取数据。
[code]PartTrackList_API <- function(CarNun, CarId){
  url <- 'Report/PartTrackList/Search'
  
  payload <- list(RptTimeCtrl.BeginTime      = '2018-08-30 00:00:00',
                  RptTimeCtrl.EndTime        = '2018-08-31 00:00:00',
                  rows                       = 200,
                  page                       = 1,
                  OrgAndCarList.Text         = '',
                  OrgAndCarList.OrgId        = 1,
                  OrgAndCarList.CarNun       = CarNun,
                  OrgAndCarList.CarId        = CarId,
                  DistanceTime.SelectedValue = 30)
  
  PartTrackList <- POST(str_c(TopGPS_url, url),
                        add_headers(.headers = headers),
                        set_cookies(.cookies = cookies),
                        body = payload,
                        encode ="form", verbose(), accept_json()) %>%
    content("raw") %>%
    str_conv("utf-8") %>%  
    fromJSON() %>% `[[`(2) %>%
    sapply(., unlist)
  

  PartTrackList[row.names(PartTrackList)=="platenum"]      -> 车牌号码
  PartTrackList[row.names(PartTrackList)=="platecolor"]    -> 车牌颜色
  PartTrackList[row.names(PartTrackList)=="speed"]         -> 速度
  PartTrackList[row.names(PartTrackList)=="longitude"]     -> 经度
  PartTrackList[row.names(PartTrackList)=="latitude"]      -> 纬度
  PartTrackList[row.names(PartTrackList)=="mileage"]       -> 行驶里程_公里
  PartTrackList[row.names(PartTrackList)=="position"]      -> 地址
  PartTrackList[row.names(PartTrackList)=="beingtime"]     -> 点火时间
  PartTrackList[row.names(PartTrackList)=="endtime"]       -> 熄火时间
  
  PartTrackList <- data.frame(车牌号码, 车牌颜色, 速度, 经度, 纬度, 行驶里程_公里, 地址, 点火时间, 熄火时间, stringsAsFactors = F)
}[/code]
函数中有2个参数: “carnum”, “carid”  
测试此函数可以正常的运行,并返回数据(POST 请求回JSON格式,我解析成数据框)
有一百多个  “carnum”, “carid”    需要放入 parttracklist_API 函数中运行, 我就用 mapply : m_part <- mapply(parttracklist_API, carlist$carnum, carlist$carid)  
这个 m_part 可以正常运行, 后台看到POST请求正常,但是无数据。
后 发现单独使用 parttracklist_API(carlist$carnum, carlist$carid)  可以正常返回数据,加上 mapply 可以运行,但无数据返回。
这个是什么原因?  post 太频繁,速度过快吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-10-9 16:41:33
帮楼主顶一下,希望帖子能够尽快有大神帮忙解决
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-10-9 22:35:44
如果用mapply,可能类似并发的请求,被网站给干掉了。
你可以用循环慢慢来吧,毕竟你要从人家这里要数据,不能太占用人家的资源。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群