Я пытаюсь передать параметры в URL-адрес REST Get, чтобы получить данные из API-интерфейса NCEI NOAA, и хотя жестко написанные URL-адреса работают, URL-адреса, которые я создаю с параметрами, — нет, хотя когда я их печатаю, они оба идентичны.
Я перефразировал ошибки, потому что их было очень много, но я удалил то, что, по моему мнению, является ключевыми частями. Появляется несколько ошибок: AttributeError, InvalidURL и MissingSchema.
EDIT: я свел это к коду здесь, вместо проблемы с загрузкой данных в фрейм данных, поскольку ошибка, которую я получал при попытке загрузить данные request_ROC в фрейм данных, была «Неверный путь к файлу или тип объекта буфера: », поэтому мне нужно было проверить получение любого ответа от создания URL-адреса с параметрами, которые похоже, не работает.
Код:
url_test = 'https://www.ncei.noaa.gov/access/servic ... format=csv'
hostendpoint = 'https://www.ncei.noaa.gov/access/services/data/v1'
dataTypes = ['AWND','WDF1','WDF5','WDFG','WSF1','WSF2','WDFM','WSFM','WSFG','WDMV']
url_params = {
"dataset": "daily-summaries",
"stations": "USW00014768",
"startDate": "1984-01-01",
"endDate": "2026-04-13",
"dataTypes": "AWND,WDF1,WDF5,WDFG,WSF1,WSF2,WDFM,WSFM,WSFG,WDMV",
"includeStationName": "true",
"format": "csv"
}
#Create URL and pass comma in URL using urllib
request_ROC = requests.get(hostendpoint, params=urllib.parse.urlencode(url_params, safe=','), verify=True)
print(request_ROC.encoding)
print('Test URL: ' + url_test)
print('REST URL: ' + request_ROC.url)
Вывод до ошибок:
utf-8
Test URL: https://www.ncei.noaa.gov/access/servic ... format=csv
REST URL: https://www.ncei.noaa.gov/access/servic ... format=csv
Status Code - Text URL: 200
Ошибки (перефразировано):
- AttributeError: ...in parse_url(url) host, port = _HOST_PORT_RE.match(host_port).groups()
# type: ignore[union-attr]
AttributeError: 'NoneType' object has no attribute 'groups'
The above exception was the direct cause of the following exception:
- LocationParseError: ...PreparedRequest.prepare_url(self, url, params) scheme, auth, host, port, path, query, fragment = parse_url(url) - in parse_url(url)
450 except (ValueError, AttributeError) as e:
--> 451 raise LocationParseError(source_url) from e
Failed to parse:
During handling of the above exception, another exception occurred:
- InvalidURL:... response_ROC = requests.get(request_ROC)
in get(url, params, **kwargs)
62 def get(url, params=None, **kwargs):
self.prepare_url(url, params)
raise MissingSchema(
439 f"Invalid URL {url!r}: No scheme supplied. "
440 f"Perhaps you meant https://{url}?"