首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R中的下拉菜单中获取所有每日油价

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

Stack Overflow用户
提问于 2019-11-10 04:17:09
回答 1查看 66关注 0票数 0

我正试图从这个链接中得到伊斯坦布尔所有县的石油价格:

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

其中有两个城市和县的下拉列表,代码如下:

代码语言:javascript
复制
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中,数据也没有分离成单元格。如何更有效地编写这段代码,以便:

  1. I可能不需要指定IST_DATA中的所有县。
  2. 获取的数据与网页中的表完全相同.

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-10 05:15:34

代码语言:javascript
复制
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") }

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58785681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档