Почему мой веб-просмотр дает HTML, но не возвращает никакого текста? - PullRequest
0 голосов
/ 20 марта 2020

Новый кодер здесь. Я пытаюсь вернуть все данные о прибыли на акцию с этого сайта здесь: https://www.nasdaq.com/market-activity/stocks/csco/revenue-eps

Я начал медленно, просто пытаясь вернуть «март», и использовал этот код:

from bs4 import BeautifulSoup
from requests import get

url = "https://www.nasdaq.com/market-activity/stocks/csco/revenue-eps"
response = get(url)
soup = BeautifulSoup(response.text, 'html.parser')

month = soup.find("th", {"class": "revenue-eps__cell revenue-eps__cell--rowheading"})

print(month.text)

Когда я запускаю его, ошибок нет, но ничего не возвращается.
Когда я пытаюсь запустить тот же код, но вместо этого использую print(month), я возвращаю HTML из элемента, который выглядит например:
th class="revenue-eps__cell revenue-eps__cell--rowheading" scope="row"> /th>

Я заметил в возвращаемом HTML, что текст не находится внутри th. Это почему? Я делаю что-то не так или это сайт, который я пытаюсь почистить?

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Данные не встраиваются в страницу, а извлекаются из API. Вы можете передать название компании в качестве параметра, чтобы получить все данные напрямую:

import requests
import json

company = "CSCO"
r = requests.get("https://api.nasdaq.com/api/company/{}/revenue?limit=1".format(company))

print(json.loads(r.text)['data'])
0 голосов
/ 20 марта 2020

Я думаю, что вы должны изменить response.text с помощью просто response, потому что иначе он не может найти html тегов и классов, потому что это текст, а не html

...