Open victor1629 opened 3 weeks ago
import requests from requests import Response youbike_url = 'https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json' res:Response = requests.get(youbike_url) if res.status_code == 200: print("下載成功") else: print("下載失敗") from pydantic import BaseModel,Field,field_validator,RootModel class site (BaseModel): 站名:str = Field(alias='sna') 行政區域:str = Field(alias='sarea') 時間:str = Field(alias='mady') 位置:str = Field(alias='ar') 狀態:bool = Field(alias='act') 總數量:int = Field(alias='total') 可借:int = Field(alias='available_rent_bikes') 經度:float = Field(alias='latitude') 緯度:float = Field(alias='longitude') 可還:int = Field(alias='vailable_return_bikes') @field_validator('站名') @classmethod def get_name(cls,value:str) ->str: return value.split('_')[-1] class Youbick(RootModel): root:list = list[site] def __iter__(self) : return iter(self.root) def __getitem__(self,item): return self.root[item] data = Youbick.model_validate_json(res.text) all_sites = data.model_dump() import pandas as pd df = pd.DataFrame(all_sites) df
![]()
![]()
import requests
from requests import Response
youbike_url = 'https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json'
res:Response = requests.get(youbike_url)
if res.status_code == 200:
print("下載成功")
else:
print("下載失敗")
from pydantic import BaseModel,Field,field_validator,RootModel
class Site (BaseModel):
站名:str = Field(alias='sna')
行政區域:str = Field(alias='sarea')
時間:str = Field(alias='mday')
位置:str = Field(alias='ar')
狀態:bool = Field(alias='act')
總數量:int = Field(alias='total')
可借:int = Field(alias='available_rent_bikes')
緯度:float = Field(alias='latitude')
經度:float = Field(alias='longitude')
可還:int = Field(alias='available_return_bikes')
@field_validator('站名',mode='before')
@classmethod
def get_name(cls,value:str) ->str:
return value.split('_')[-1]
class Youbick(RootModel):
root:list[Site]
data = Youbick.model_validate_json(res.text)
all_sites = data.model_dump()
import pandas as pd
df = pd.DataFrame(all_sites)
df