Как я могу автоматизировать загрузку файлов с веб-сайта, используя разные входные данные с помощью Python?

#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, поскольку я новичок в этой теме?