从R的下拉菜单中获取所有每日石油价格

时间:2019-11-10 04:17:09

标签: html r dataframe drop-down-menu

我正试图通过此链接获取伊斯坦布尔所有县的石油价格:

https://www.petrolofisi.com.tr/akaryakit-fiyatlari

具有两个用于选择城市和县的下拉列表,其代码如下:

IST_DATA  <- data.frame(Sehir ="ISTANBUL",Ilce="ADALAR")
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="AVCILAR"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BAGCILAR"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BAHCELIEVLER"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BAKIRKOY"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BAYRAMPASA"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BESIKTAS"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BEYKOZ"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BEYOGLU"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="BUYUKCEKMECE"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="CATALCA"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="EMINONU"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="ESENLER"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="EYUP"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="FATIH"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="GAZIOSMANPASA"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="GUNGOREN"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="ISTANBUL_ANA"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="ISTANBUL_TRA"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="KADIKOY"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="KAGITHANE"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="KARTAL"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="KUCUKCEKMECE"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="MALTEPE"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="PENDIK"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="SARIYER"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="SILE"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="SILIVRI"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="SISLI"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="SULTANBEYLI"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="TUZLA"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="UMRANIYE"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="USKUDAR"))
IST_DATA  <- rbind.data.frame(IST_DATA,  data.frame(Sehir="ISTANBUL", Ilce="ZEYTINBURNU"))

FileData <- as.data.frame(NULL)

for(i in 1:nrow(IST_DATA))
{ 
 url <- sprintf("https://www.petrolofisi.com.tr/posvc/fiyat/guncel?il=%s&Ilce=%s", IST_DATA$Sehir[i], IST_DATA$Ilce[i])
 download.file(url,"petrolofisi.html", quiet=TRUE)
 AppendData <- as.data.frame(read_html("petrolofisi.html") %>% html_text(), stringsAsFactors=FALSE)     
 FileData <- rbind.data.frame(FileData,AppendData)
 rownames(FileData)[i] <- as.character(IST_DATA$Ilce[i])
}
View(FileData)
write_excel_csv2( x= FileData, path="AKARYAKIT.xls") 

这导致了不太理想的输出,如:

Oil Prices

rownames未在excel中显示,并且数据未分离到单元格中。如何更有效地编写此代码,以便:

  1. 我可能不需要指定IST_DATA中的所有县。
  2. 完全按照表格中的表格获取数据。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

library(jsonlite)
library(httr)
library(dplyr)
library(tidyverse)
library(openxlsx)
if(curl::has_internet()==TRUE) {
  link="https://www.petrolofisi.com.tr/posvc/fiyat/ililce?il=ISTANBUL"
  r <- GET(link)
  city=fromJSON(content(r,"text"))
  
  data_all <- data.frame()
  for(i in city$Ilceler) {
    link=paste0("https://www.petrolofisi.com.tr/posvc/fiyat/guncel?il=ISTANBUL&Ilce=",i)
    r <- GET(link)
    res=fromJSON(content(r,"text"))
    paste(res)
    data_all <- bind_rows(data_all, res)
           }
  
  table_oil = data_all %>% mutate(counties=city$Ilceler,V_Max_Lead_Free_95=as.double(K95),V_Max_Lead_Free_97=as.double(K97),V_Max_EuroDiesel=as.double(Mot50),V_Pro_EuroDiesel=as.double(MotPro),PO_gas=as.double(PoGaz)) %>% select(AktarimTarihi,counties,V_Max_Lead_Free_95,V_Max_Lead_Free_97,V_Max_EuroDiesel,V_Pro_EuroDiesel,PO_gas)
  write.xlsx(table_oil, 'table_oil.xlsx')
 } else { print("check your internet connection is working properly") }

enter image description here