我正试图通过此链接获取伊斯坦布尔所有县的石油价格:
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")
这导致了不太理想的输出,如:
rownames
未在excel中显示,并且数据未分离到单元格中。如何更有效地编写此代码,以便:
IST_DATA
中的所有县。 非常感谢您的帮助。
答案 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") }