Home > database >  How to get specific element from json file?
How to get specific element from json file?

Time:04-19

I'm making request using python for news api.

How can I get the source with the name "Ixbt.com" and then get title and description using python loop?

{
      "source": {
        "id": "google-news",
        "name": "Google News"
      },
      "author": null,
      "title": "Samsung выпустит лимитированный Galaxy Z Flip3 для поклонников Pokemon - Rozetked",
      "description": null,
      "url": "https://news.google.com/__i/rss/rd/articles/CBMiZmh0dHBzOi8vcm96ZXRrZWQubWUvbmV3cy8yMzA4OC1zYW1zdW5nLXZ5cHVzdGl0LWxpbWl0aXJvdmFubnl5LWdhbGF4eS16LWZsaXAzLWRseWEtcG9rbG9ubmlrb3YtcG9rZW1vbtIBAA?oc=5",
      "urlToImage": null,
      "publishedAt": "2022-04-19T10:07:40Z",
      "content": null
    },
    {
      "source": {
        "id": null,
        "name": "Ixbt.com"
      },
      "author": null,
      "title": "Уникальная во всём карманная игровая приставка. Поставки консоли Playdate наконец-то стартовали - iXBT.com - новости техники и технологий",
      "description": "Очень необычная игровая приставка Panic Playdate была представлена ещё в 2019 году, но лишь сейчас компания начала первые поставки. В письме к клиентам компания рассказала, что поставки первой партии стартовали вчера и продлятся в течение ближайших недель.",
      "url": "https://www.ixbt.com/news/2022/04/19/unikalnaja-vo-vsjom-karmannaja-igrovaja-pristavka-postavki-konsoli-playdate-nakonecto-startovali.html",
      "urlToImage": "https://www.ixbt.com/img/n1/news/2022/3/2/playdate-boxed-2_large.jpg",
      "publishedAt": "2022-04-19T10:07:00Z",
      "content": "Panic Playdate 2019 , . \r\n , . , , . \r\n Panic . , - , .  \r\n  2022 , , . 2023 , .\r\n, Playdate , ."
    },

I have idea, but not sure.

I guess it should look like that:

print([article["source"].get("name") for article in data["articles"]])

But that's wrong.

CodePudding user response:

articles = [{
        "source": {
        "id": "google-news",
        "name": "Google News"
        },
          "author": None,
          "title": "Samsung выпустит лимитированный Galaxy Z Flip3 для поклонников Pokemon - Rozetked",
          "description": None,
          "url": "https://news.google.com/__i/rss/rd/articles/CBMiZmh0dHBzOi8vcm96ZXRrZWQubWUvbmV3cy8yMzA4OC1zYW1zdW5nLXZ5cHVzdGl0LWxpbWl0aXJvdmFubnl5LWdhbGF4eS16LWZsaXAzLWRseWEtcG9rbG9ubmlrb3YtcG9rZW1vbtIBAA?oc=5",
          "urlToImage": None,
          "publishedAt": "2022-04-19T10:07:40Z",
          "content": None
        },
        {
          "source": {
            "id": None,
            "name": "Ixbt.com"
          },
          "author": None,
          "title": "Уникальная во всём карманная игровая приставка. Поставки консоли Playdate наконец-то стартовали - iXBT.com - новости техники и технологий",
          "description": "Очень необычная игровая приставка Panic Playdate была представлена ещё в 2019 году, но лишь сейчас компания начала первые поставки. В письме к клиентам компания рассказала, что поставки первой партии стартовали вчера и продлятся в течение ближайших недель.",
          "url": "https://www.ixbt.com/news/2022/04/19/unikalnaja-vo-vsjom-karmannaja-igrovaja-pristavka-postavki-konsoli-playdate-nakonecto-startovali.html",
          "urlToImage": "https://www.ixbt.com/img/n1/news/2022/3/2/playdate-boxed-2_large.jpg",
          "publishedAt": "2022-04-19T10:07:00Z",
          "content": "Panic Playdate 2019 , . \r\n , . , , . \r\n Panic . , - , .  \r\n  2022 , , . 2023 , .\r\n, Playdate , ."
        }]
for article in articles:
    source_name = article['source']['name']

Something more than it?

CodePudding user response:

I think it can be achieved by the following code and also depends on how you are going to store the titles and descriptions of those source names.

news =[
    {
      "source": {
        "id": "google-news",
        "name": "Google News"
      },
      "author": null,
      "title": "Samsung выпустит лимитированный Galaxy Z Flip3 для поклонников Pokemon - Rozetked",
      "description": null,
      "url": "https://news.google.com/__i/rss/rd/articles/CBMiZmh0dHBzOi8vcm96ZXRrZWQubWUvbmV3cy8yMzA4OC1zYW1zdW5nLXZ5cHVzdGl0LWxpbWl0aXJvdmFubnl5LWdhbGF4eS16LWZsaXAzLWRseWEtcG9rbG9ubmlrb3YtcG9rZW1vbtIBAA?oc=5",
      "urlToImage": null,
      "publishedAt": "2022-04-19T10:07:40Z",
      "content": null
    },
    {
      "source": {
        "id": null,
        "name": "Ixbt.com"
      },
      "author": null,
      "title": "Уникальная во всём карманная игровая приставка. Поставки консоли Playdate наконец-то стартовали - iXBT.com - новости техники и технологий",
      "description": "Очень необычная игровая приставка Panic Playdate была представлена ещё в 2019 году, но лишь сейчас компания начала первые поставки. В письме к клиентам компания рассказала, что поставки первой партии стартовали вчера и продлятся в течение ближайших недель.",
      "url": "https://www.ixbt.com/news/2022/04/19/unikalnaja-vo-vsjom-karmannaja-igrovaja-pristavka-postavki-konsoli-playdate-nakonecto-startovali.html",
      "urlToImage": "https://www.ixbt.com/img/n1/news/2022/3/2/playdate-boxed-2_large.jpg",
      "publishedAt": "2022-04-19T10:07:00Z",
      "content": "Panic Playdate 2019 , . \r\n , . , , . \r\n Panic . , - , .  \r\n  2022 , , . 2023 , .\r\n, Playdate , ."
    }
    ]

for vals in news:
    if vals['source']['name'] == "Ibxt.com" :
       title = vals['title']
       desc  = vals['description']

If you want to store those titles and description to new list/dictornary we can add/append them by creating new variables accordingly

  • Related