Python Отклоняет Допустимый JSON

#python #json

Вопрос:

Я пытаюсь обработать этот JSON с помощью python3: http://www.bom.gov.au/fwo/IDV60701/IDV60701.94857.json

Но я получаю следующую ошибку:

 Traceback (most recent call last):
  File "./weath.py", line 41, in <module>
    data1                   = response.json()
  File "/home/dz/anaconda3/lib/python3.8/site-packages/requests/models.py", line 898, in json
    return complexjson.loads(self.text, **kwargs)
  File "/home/dz/anaconda3/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/home/dz/anaconda3/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/dz/anaconda3/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
 

https://jsonlint.com/

Проверяет JSON как действительный, поэтому я не уверен, почему это не удается.

Вот код на python:

 url                     = "http://www.bom.gov.au/fwo/IDV60701/IDV60701.94857.json"
response                = requests.get(url)
data1                   = response.json()
 

Это работало 2 недели назад.
Как я могу это исправить?

Комментарии:

1. Прочитайте ошибку еще раз. Он жалуется на невидимый NUL символ в начале текста. Если вы не включите это значение NUL в текст, который вы копируете в JSON lint, вы не получите никаких ошибок.

2. Похоже, что-то с ошибкой веб-сайта: ответ.вывод текста: «Обнаружен потенциальный автоматический запрос! Мы вносим изменения на наш веб-сайт, поэтому очистка веб-страниц больше не поддерживается. Пожалуйста, свяжитесь с нами, заполнив подробную информацию по адресу reg.bom.gov.au/screenscraper/screenscraper_enquiry_form и мы свяжемся с вами».

3. Майк, ввод URL-адреса в браузер сработал, и у меня не было причин подозревать, что спецификация делает что-то столь же мерзкое, как это. Мне не нужно указывать, что мои налоги финансируют эту организацию.

Ответ №1:

Это проблема, связанная с конкретной конечной точкой службы, которую вы используете. Они отключили очистку веб-страниц с помощью какого-то механизма.

Если вы посмотрите на свой объект ответа, вы увидите, что это 403 (запрещено) со следующим сообщением:

Обнаружен потенциальный автоматический запрос! Мы вносим изменения на наш веб-сайт, поэтому очистка веб-страниц больше не поддерживается. Пожалуйста, свяжитесь с нами, заполнив подробную информацию по адресу http://reg.bom.gov.au/screenscraper/screenscraper_enquiry_form/ и мы свяжемся с вами.

Вы можете убедиться в этом сами:

 response = requests.get("http://www.bom.gov.au/fwo/IDV60701/IDV60701.94857.json")
print(response.status_code)  # 403
print(response.text)  # above quote
 

Ответ №2:

Когда я запустил этот код:

 import requests

url = "http://www.bom.gov.au/fwo/IDV60701/IDV60701.94857.json"
response = requests.get(url).text

print(response)
 

Отпечаток вернулся

 Potential automated request detected! We are making changes to our website therefore web scraping is no longer supported. Please contact us by filling in the details at http://reg.bom.gov.au/screenscraper/screenscraper_enquiry_form/ and we will get in touch with you.
 

Похоже, что этот веб-сайт отключил веб-очистку или что-то в этом роде

Комментарии:

1. попробуйте добавить заголовки из браузера. Я думаю, что это должно сработать 🙂

2. Я связался с ними.