#python #web-scraping #automation #download #request
#python #веб-очистка #автоматизация #Скачать #запрос
Вопрос:
Мне нужно загрузить ряд данных с веб-сайта https://www.renewables.ninja / и я хочу автоматизировать процесс, используя Python, если это возможно.
Я хочу выбрать города (скажем, Берлин, Нью-Йорк, Сеул), а также параметры для солнечной фотоэлектрической и ветровой энергии на основе входных данных из файла Python и запустить его (что на веб-сайте занимает около 5 секунд) и загрузить файлы csv.введите описание изображения здесь
Возможно ли автоматизировать этот процесс с помощью Python, поскольку мне нужно загрузить большое количество файлов для разных точек данных? введите описание изображения здесь
Ответ №1:
Вы можете извлекать файлы и сохранять их с помощью модуля запросов следующим образом:
import requests
with open('saved_data_file.csv','w') as f:
csv_data = requests.get('https://www.renewables.ninja/api/data/weather',
params={"format":"csv"}).content
f.write(csv_data)
Если вы хотите увидеть, какие параметры используются при запросе определенных данных с веб-сайта, откройте элемент проверки (F12) и перейдите на вкладку сеть. Запросите данные, используя их форму, и посмотрите на новый запрос, который появится. URL-адрес будет выглядеть примерно так:
https://www.renewables.ninja/api/data/weather?local_time=trueamp;format=csvamp;header=trueamp;lat=70.90491170356151amp;lon=24.589843749945597amp;date_from=2019-01-01amp;date_to=2019-12-31amp;dataset=merra2amp;var_t2m=trueamp;var_prectotland=falseamp;var_precsnoland=falseamp;var_snomas=falseamp;var_rhoa=falseamp;var_swgdn=falseamp;var_swtdn=falseamp;var_cldtot=false
Затем выберите нужные параметры и поместите их в словарь, который вы вводите, requests.get
например params={"format":"csv","local_time":"true","header":"true" etc.}
Ответ №2:
Да, этот процесс определенно можно автоматизировать. Рассмотрите возможность просмотра этого URL: https://www.renewables.ninja/api/data/pv?local_time=trueamp;format=csvamp;header=trueamp;lat=52.5170365amp;lon=13.3888599amp;date_from=2019-01-01amp;date_to=2019-12-31amp;dataset=merra2amp;capacity=1amp;system_loss=0.1amp;tracking=0amp;tilt=35amp;azim=180amp;raw=false
Это запрос к API для данных SolarPV.Здесь вы можете изменить параметры запроса и получить данные для нужных вам городов.Просто измените параметры lat и lon.
Чтобы получить эти параметры для city, вы можете использовать этот API: https://nominatim.openstreetmap.org/search ?format=jsonamp;limit=1amp;q= берлин. Измените параметр q здесь для нужного вам города.
Пример кода:
import json
import requests
COORD_API = "https://nominatim.openstreetmap.org/search"
CITY = "berlin" # It's just an example.
payload = {'format': 'json', 'limit': 1, 'q':CITY}
r = requests.get(COORD_API, params=payload)
lat_long_data = json.loads(r.text)
lat = lat_long_data[0]['lat']
lon = lat_long_data[0]['lon']
# With this values we can get Solar data
MAIN_API = "https://www.renewables.ninja/api/data/pv?local_time=trueamp;format=csvamp;header=trueamp;date_from=2019-01-01amp;date_to=2019-12-31amp;dataset=merra2amp;capacity=1amp;system_loss=0.1amp;tracking=0amp;tilt=35amp;azim=180amp;raw=false"
payload = {'lat': lat, 'lon': lon}
resp = requests.get(MAIN_API, params=payload)
***
Do something with this data.
Комментарии:
1. Спасибо за ваш быстрый ответ! Не могли бы вы сообщить мне, как должен выглядеть код на Python, поскольку я новичок в этой теме?