Python Parsing. 'bool' object has no attribute 'json'

Я пытался соединить 2 кода. 1:

import requests

url = 'https://api.nasdaq.com/api/quote/NVDA/summary?assetclass=stocks'
headers = {'user-agent': '.....'}

r = requests.get(url, headers=headers)
data = r.json()['data']['summaryData']['Yield']['value']

print(data)

и 2:

import requests
from bs4 import BeautifulSoup
import os

HEADERS = {'user-agent': '.....', 'accept': '*/*'}

def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='page__content')

r = True
something = []
for item in items:
    
    something.append({
        'name': item.find('span', class_='symbol-page-header__name').get_text(strip=True),
        
        
    
    })
print(something)




def parse():
URL = []
print("URL: ", end='')
while True:
    data = input()
    if data == "":
        break
    URL.append(data)

for i in URL:
    html = get_html(i.strip())


    if html.status_code == 200:
        something = get_content(html.text)
    else:
        print('Error')

parse()

Я пытался это все склеить:

import requests
from bs4 import BeautifulSoup
import os



HEADERS = {'user-agent': '....', 'accept': '*/*'}

def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='page__content')

r = True
something = []
for item in items:
    
    something.append({
        'name': item.find('span', class_='symbol-page-header__name').get_text(strip=True),
        'data': r.json()['data']['summaryData']['Yield']['value'],
        
    
    })
print(something)




def parse():
URL = []
print("URL: ", end='')
while True:
    data = input()
    if data == "":
        break
    URL.append(data)

for i in URL:
    html = get_html(i.strip())


    if html.status_code == 200:
        something = get_content(html.text)
    else:
        print('Error')

parse()

И тут выводится ошибка

URL: 'bool' object has no attribute 'json'
Трассировка стека:
 >  File "E:\Parsing\ParsingNasdaqV.2\ParsingNasdaqV.2\ParsingNasdaqV.2.py", line 23, in get_content
 >    'data': r.json()['data']['summaryData']['Yield']['value'],
 >  File "E:\Parsing\ParsingNasdaqV.2\ParsingNasdaqV.2\ParsingNasdaqV.2.py", line 46, in parse
 >    something = get_content(html.text)
 >  File "E:\Parsing\ParsingNasdaqV.2\ParsingNasdaqV.2\ParsingNasdaqV.2.py", line 50, in <module> 
(Current frame)
>    parse()
Модуль "__main__" загружен
Модуль "runpy" загружен
Программа "python.exe" завершилась с кодом -1 (0xffffffff).

Как можно это исправить, чтобы был вывод 2 значений. Вот сам сайт: https://www.nasdaq.com/market-activity/stocks/nvda Спасибо!

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


Ответы (1 шт):

Автор решения: NEWME0

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

  1. https://api.nasdaq.com/api/quote/NVDA/summary?assetclass=stocks
  2. https://www.nasdaq.com/market-activity/stocks/nvda

Первый запрос возвращает JSON данные а второй HTML.

Я так понял (могу ошибаться) с первой страницы достать:

json['data']['summaryData']['Yield']['value'] # какое то значение

а со второй:

soup.find('span', class_='symbol-page-header__name') # название компании

Если так то код примерно такой:

import bs4
import requests


def main():
    headers = {'user-agent': '.....', 'accept': '*/*'}

    # Первую парсим как JSON
    url_1 = 'https://api.nasdaq.com/api/quote/NVDA/summary?assetclass=stocks'
    response_1 = requests.get(url_1, headers=headers)
    content_1 = response_1.json()
    data_1 = content_1['data']['summaryData']['Yield']['value']
    print(data_1)

    # Вторую парсим как HTML
    url_2 = 'https://www.nasdaq.com/market-activity/stocks/nvda'
    response_2 = requests.get(url_2, headers=headers)
    content_2 = bs4.BeautifulSoup(response_2.text, 'html.parser')
    data_2 = content_2.find('span', class_='symbol-page-header__name').get_text(strip=True)
    print(data_2)


main()
→ Ссылка