Как прочитать данные из API, который выдает несанкционированную ошибку при доступе к URL запроса

#python-3.x #web-scraping #beautifulsoup #request

#python-3.x #очистка веб-страниц #beautifulsoup #запрос

Вопрос:

Я пытаюсь «ОЧИСТИТЬ» веб-сайт, но когда я пытаюсь открыть URL запроса, он выдает мне несанкционированную ошибку со статусом 401.

Веб-сайт:https://www.dbxkjfejjekef.com /

URL запроса:https://www.db.co.in/__api__/api/1.0/feed/home

Сообщение об ошибке:

 {
   error: "Unauthorized",
   message: "Check failed",
   path: "/__api__/api/1.0/feed/home",
   timestamp: 1597861914142,
   status: 401
}
  

В разделе предварительного просмотра инструментов разработчика я могу видеть данные:

введите описание изображения здесь

Как мне очистить эти данные, чтобы они выглядели как:

 Title : slug   title
URL : shareUri
  

Я могу написать код, но я не знаю, что анализировать.

Ответ №1:

Чтобы получить правильный ответ, установите x-aut-web-t HTTP заголовок:

 import json
import requests


url = 'https://www.divyabhaskar.co.in/__api__/api/1.0/feed/home'
headers = {
    'x-aut-web-t': '420x66695ztde3qao6a69'
}

data = requests.get(url, headers=headers).json()
print(json.dumps(data, indent=4))
  

С принтами:

 {
    "metaTitle": "Gujarati News, News in Gujarati u2013 u0a97u0ac1u0a9cu0ab0u0abeu0aa4 u0ab8u0aaeu0abeu0a9au0abeu0ab0 | u0aa6u0abfu0ab5u0acdu0aaf u0aadu0abeu0ab8u0acdu0a95u0ab0",
    "metaDescription": "Gujarati News Samachar - Find all Gujarati News and Samachar, News in Gujarati, Gujarat News, Gujarati News Headlines and Daily Breaking News, Gujarati News Paper in DivyaBhaskar.co.in.",
    "metaKeywords": "News, Gujarati news, news in Gujarati, newspaper, Gujarati newspaper, online news, daily news, national news, India news, political news, sports news",
    "cursor": "eyJ2IjoxLCJoYXNwIjp0cnVlLCJmbWF0IjpudWxsLCJsbWF0IjoxNTk3ODQwNTc0MDAwfQ",
    "feed": [
        {
            "storyId": 127630068,
            "shareUri": "https://divya-b.in/CQ4aHWCa48",
            "priority": 1,

...and so on.
  

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

1. спасибо, Андрей. Это работает, как ожидалось, но при печати я вижу странные символы: «title»: » u0a9b u0ac7 u0ab2 u0acd u0ab2 u0abe 24 u0a95 u0ab2 u0abe u0a95 u0aae u0abe u0a82 63 u0ab9 u0a9c u0abe u0ab0u0aa5u0ac0u0ab5u0aa7u0ac1 u0a9fu0ac7u0ab8u0acdu0a9f, 1,145 u0aa8u0ab5u0abe u0aa6u0ab0u0acdu0aa6u0ac0 u0a85u0aa8u0ac7 17u0aa8u0abe u0aaeu0acbu0aa4, u0a95u0ac1u0ab2 u0a95u0ac7u0ab8 82 u0ab9u0a9cu0abeu0ab0u0aa8u0ac7 u0aaau0abeu0ab0″,

2. @parikhparth23 Это не странно, это представление в Юникоде — попробуйте print(data['metaTitle']) , оно должно печатать правильные символы Юникода.