Home > Software engineering >  How can I get certain element from json file in Python?
How can I get certain element from json file in Python?

Time:04-21

I'm trying to get specific element from json file.

I have this file and I want to get title and description from the source which has name "Ixbt.com":

{
  "status": "ok",
  "totalResults": 70,
  "articles": [
    {
      "source": {
        "id": null,
        "name": "3dnews.ru"
      },
      "author": null,
      "title": "«Фогейм» запустил сервис по продаже ключей для игр из Steam и Ubisoft Connect - 3DNews",
      "description": "Онлайн-платформа «Фогейм» объявила о запуске нового раздела, в котором продаются ключи к популярным играм для сторонних площадок.",
      "url": "https://3dnews.ru/1064336/fogeym-zapustil-servis-po-prodage-klyuchey-dlya-igr-iz-steam-i-ubisoft-connect",
      "urlToImage": "https://3dnews.ru/assets/external/illustrations/2022/04/20/1064336/sm.forgame_title.750.jpg",
      "publishedAt": "2022-04-20T11:22:00Z",
      "content": "- «» , .\r\nSteam Ubisoft Connect. -, , , Steam Ubisoft Connect.\r\n «» , , , « » «Money».\r\n- «» : RPG, , , , , , .\r\n (ELEX II, Beholder 3), : Detroit: Become Human, Dark Souls 3, Euro Truck Simulator 2,… [ 97 chars]"
    },
    {
      "source": {
        "id": null,
        "name": "Ixbt.com"
      },
      "author": null,
      "title": "«AMP помогает Google ещё больше монополизировать и контролировать интернет». Браузер Brave объявил войну «ускорителю интернета» Google - iXBT.com - новости техники и технологий",
      "description": "Браузер Brave, созданный компанией Brave Software, основанной бывшим главой Mozilla, решил начать новую битву с Google. В прошлом году Brave перешёл на собственную поисковую систему, а теперь разработчики решили объявить войну технологии Google AMP.",
      "url": "https://www.ixbt.com/news/2022/04/20/amp-google-brave-google.html",
      "urlToImage": "https://www.ixbt.com/img/n1/news/2022/3/3/3231_large.jpg",
      "publishedAt": "2022-04-20T11:05:00Z",
      "content": "Brave,  Brave Software, Mozilla, Google.  \r\n Brave , Google AMP. , AMP , « ». JavaScript, . Google, -. \r\n, Brave, AMP , , , , AMP Google . \r\n AMP De-AMP.  \r\nBrave AMP . , , De-AMP URL-, AMP.  , , Bra… [ 61 chars]"
    },
    {
      "source": {
        "id": null,
        "name": "Mobiltelefon.ru"
      },
      "author": null,
      "title": "Мировой рынок смартфонов терпит падение: отчёт за Q1 2022 - Mobiltelefon.Ru",
      "description": "Первый квартал 2022 года позади, а значит пришла пора взглянуть на динамику рынка смартфонов. По данным исследователей Canalys, мировые поставки смарт...",
      "url": "https://mobiltelefon.ru/post_1650451241.html",
      "urlToImage": "https://mobiltelefon.ru/photo/april22/20/mirovoj_rynok_smartfonov_terpit_padenie_otchet_za_q1_2022_picture6_0_resize.jpg",
      "publishedAt": "2022-04-20T10:40:00Z",
      "content": "2022 , . Canalys, : 11% . 308 . , Samsung 22 24%. Apple, 15 18% .\r\n Xiaomi OPPO ( OnePlus!), , : 14 13% 11 10% . Vivo ( 10 8%) . , , - . , : , , .\r\n© . Mobiltelefon\r\n canalys.com"
    },
    {
      "source": {
        "id": null,
        "name": "Mail.ru"
      },
      "author": "Юлия Углова",
      "title": "OnePlus Nord N20: представлена новинка с камерой 64 Мп - Hi-Tech Mail.ru",
      "description": "За смартфон с поддержкой 5G просят 282 доллара (22 800 рублей по курсу).",
      "url": "https://hi-tech.mail.ru/news/57633-oneplus-nord-n20-predstavlena-novinka-s-kameroy-64-mp/",
      "urlToImage": "https://resizer.mail.ru/p/4ee53374-638a-5987-a31e-50897bb86fc5/AQAKuVo1pk_ZOh0f57zib9Zgg-9j3kJm8l2sIiJh7af8eeRJNDq7t8yZ2d_HxzdrBTfyvZAYW2vfEyzZULh6gNCTDHs.jpg",
      "publishedAt": "2022-04-20T10:07:00Z",
      "content": "6,43- AMOLED-   Full HD (1920 × 1080 ), 60   - . ,  GizmoChina.\r\n«»  Qualcomm Snapdragon 695, 6- .  6 128 .  microSD.  4500 33 .\r\n , OnePlus Nord N20 16- - 64- .  2- 2- .\r\n Android 11 OxygenOS 11. , … [ 67 chars]"
    },
    {
      "source": {
        "id": null,
        "name": "Mobiltelefon.ru"
      },
      "author": null,
      "title": "Google Pixel 6a получит программно урезанную камеру - Mobiltelefon.Ru",
      "description": "Анонс Pixel 6a всё ближе, подробностей о смартфоне — всё больше. Так, уже точно известно, что по начинке он почти не будет отличаться от Pixel 6/6 Pro...",
      "url": "https://mobiltelefon.ru/post_1650447220.html",
      "urlToImage": "https://mobiltelefon.ru/photo/april22/20/google_pixel_6a_poluchit_programmno_urezannuu_kameru_picture2_0_resize.jpg",
      "publishedAt": "2022-04-20T09:33:00Z",
      "content": "Pixel 6a , . , , Pixel 6/6 Pro Google Tensor 6 . Google ? .\r\n Kuba Wojciechowski Pixel_Experience_2021, Pixel Google. Motion Mode, , . «bluejay», Pixel 6a. , , , , Sony IMX363 () Sony IMX386 ().\r\n , … [ 49 chars]"
    },
    {
      "source": {
        "id": null,
        "name": "Ixbt.com"
      },
      "author": null,
      "title": "AMD сделает бюджетные дискретные видеокарты бесполезными. Ryzen 7000 могут получить iGPU уровня выше Radeon RX 6500 XT - iXBT.com - новости техники и технологий",
      "description": "Мобильные процессоры Ryzen 6000 поколения Rembrandt получили iGPU с архитектурой RDNA 2, которые получились невероятно производительными для своего класса. Но, похоже, это ещё цветочки по сравнению с тем, что AMD готовит в следующем поколении. Согласно свежим…",
      "url": "https://www.ixbt.com/news/2022/04/20/amd-ryzen-7000-igpu-radeon-rx-6500-xt.html",
      "urlToImage": "https://www.ixbt.com/img/n1/news/2022/3/3/AMD-Ryzen-6000-with-RDNA-2-GPU-Radeon-680M-very_compressed-scale-4_00x-Custom-2060x1443_large.png",
      "publishedAt": "2022-04-20T09:15:00Z",
      "content": "Ryzen 6000 Rembrandt iGPU RDNA 2, . , , , AMD . \r\n , APU Ryzen 7000 Phoenix 1024–1536 ! , Radeon 680M. , Radeon RX 6500 XT 1024 , Radeon 780M . , iGPU , , Ryzen 7000 , . \r\n iGPU AMD. , Radeon 780M RX… [ 16 chars]"
    },
    {
      "source": {
        "id": null,
        "name": "Ixbt.com"
      },
      "author": null,
      "title": "Apple планирует резко опустить цену iPhone 12 и iPhone 12 mini - iXBT.com - новости техники и технологий",
      "description": "Как сообщает iDropNews, компания Apple начала планировать новую ценовую политику, связанную с осенним выпуском линейки iPhone 14. Источник подтверждает предыдущую информацию о том, что компания из Купертино снизит цену на iPhone 12 с 699 до 599 долларов.",
      "url": "https://www.ixbt.com/news/2022/04/20/apple-iphone-12-iphone-12-mini.html",
      "urlToImage": "https://www.ixbt.com/img/n1/news/2022/3/3/274472485_953612318626351_9081122162009397093_n_1280x720-800-resize_large_large.jpg",
      "publishedAt": "2022-04-20T09:06:00Z",
      "content": "iDropNews, Apple , iPhone 14.\r\n , iPhone 12 699 599 . iPhone 12 mini, 499 .\r\n , Apple . iPhone 11, .\r\n iPhone 14 : 5,4- . 6,1- 6,7- . iPhone 14, 14 Max, 14 Pro 14 Pro Max. 6,1- iPhone 14 Pro 6,7- iPh… [ 123 chars]"
    },
    {
      "source": {
        "id": null,
        "name": "Overclockers.ru"
      },
      "author": "Zelot",
      "title": "NVIDIA выпустила первые инженерные образцы GeForce RTX 4090 – старт продаж назначен на сентябрь 2022 - overclockers.ru",
      "description": "Во второй половине 2022 года в продажу поступят также процессоры AMD и Intel и видеокарты AMD",
      "url": "https://overclockers.ru/blog/TEXHAPb/show/65801/nvidia-vypustila-pervye-inzhenernye-obrazcy-geforce-rtx-4090-start-prodazh-naznachen-na-sentyabr-2022",
      "urlToImage": "https://overclockers.ru/st/legacy/blog/370098/299433_O.png",
      "publishedAt": "2022-04-20T08:41:00Z",
      "content": ", 2022 . , 2020 , . , , PlayStation 5 Xbox Series X . AMD Ryzen 5000- , . , - , , , . , , . Proof of stake (PoS).\r\n2022 Intel Raptor Lake 13- AMD Ryzen 7000- . 10- , 5 . , . Radeon RX 7000- , - 2022 … [ 218 chars]"
    },
    {
      "source": {
        "id": null,
        "name": "Ixbt.com"
      },
      "author": null,
      "title": "Эти умные часы пользователи ждали много лет. Google Pixel Watch засветились на изображении - iXBT.com - новости техники и технологий",
      "description": "Долгожданные умные часы Google Pixel Watch, как ожидается, представят уже на конференции Google I/O в первой половине мая. А сегодня мы можем оценить их внешний вид. Изображение демонстрирует устройство с круглым экраном и одним физическим элементом управлени…",
      "url": "https://www.ixbt.com/news/2022/04/20/google-pixel-watch.html",
      "urlToImage": "https://www.ixbt.com/img/n1/news/2022/3/3/rohan.jpg",
      "publishedAt": "2022-04-20T08:33:00Z",
      "content": "Google Pixel Watch, , Google I/O . . \r\n . , , , . \r\n , Google , .  , , . , Wear OS, , Google - . \r\n Google . 2017 ."
    },
    {
      "source": {
        "id": null,
        "name": "Mobiltelefon.ru"
      },
      "author": null,
      "title": "Анонс Realme Q5 и Q5 Pro — старые знакомые с небольшими правками - Mobiltelefon.Ru",
      "description": "В Китае состоялась презентация Realme Q5 и Q5 Pro, нацеленных на среднебюджетный сегмент. На поверку обе модели оказались ребрендингом ранее представл...",
      "url": "https://mobiltelefon.ru/post_1650440220.html",
      "urlToImage": "https://mobiltelefon.ru/photo/april22/20/anons_realme_q5_i_q5_pro___picture2_0_resize.jpg",
      "publishedAt": "2022-04-20T07:37:00Z",
      "content": "Realme Q5 Q5 Pro, . . , Realme Q5 Pro Realme GT Neo 2 ( 65 80 ), . « » Snapdragon 870 5000 , . (64   8   2 ), : 6,62\" AMOLED E4 120 . , 5 , .\r\n Realme Q5, , Realme 9 Pro, . , . -, : 33 60 . -, 64- 50… [ 2003 chars]"
    }
  ]
}

Now I'm doing like that and it gives me an error:

TypeError: string indices must be integers

from this code:

from re import S
import requests
import shutil

response = requests.get('https://newsapi.org/v2/top-headlines?category=technology&pageSize=10&country=ru&apiKey=<apiKey>')
print(response.status_code)

response.encoding = "utf-8"
data = response.json()


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

print(title)
print(description)

What am I doing wrong? I only need to get news from certain source name. How could that be done? Thank you in advance!

CodePudding user response:

Here's what you need to do:

for d in data['articles']:
    if d['source']['name'] == 'Ixbt.com':
        title = d['title']
        desc = d['description']

print(title, desc)

Output:

Эти умные часы пользователи ждали много лет. Google Pixel Watch засветились на изображении - iXBT.com - новости техники и технологий Долгожданные умные часы Google Pixel Watch, как ожидается, представят уже на конференции Google I/O в первой половине мая. А сегодня мы можем оценить их внешний вид. Изображение демонстрирует устройство с круглым экраном и одним физическим элементом управлени…
  • Related