Извлечение класса в Python с использованием BeautifulSoup: имя класса в исходном представлении не совпадает с работающим кодом - PullRequest
0 голосов
/ 20 марта 2020

Я тестирую использование BeautifulSoup в Python. Страница, на которую я смотрю: , это . Допустим, я хочу зафиксировать текущую цену акций. Если я посмотрю на источник страницы, то увижу это имя для класса span, который имеет цену:

"Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)"

Вот часть источника страницы (я использовал браузер chrome), который имеет этот класс:

enter image description here

Но если я использую его в Python коде как:

for span in soup.findAll('span', attrs={'class': 'Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)'}):
    price = span.text.strip()

Это не дайте мне цену (цена в этом примере 0,8000). Я нашел код, который на самом деле дает мне цену, но имя класса в коде немного отличается. Этот код работает:

for span in soup.findAll('span', attrs={'class': 'Trsdu(0.3s) Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(b)'}):
    price = span.text.strip()

Почему имя класса, которое действительно работает, отличается от того, что я вижу на странице источника? Как найти правильное имя класса, которое работает?

1 Ответ

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

Страница динамическая c. Вы получаете всю эту информацию из ответа json. не уверен, что вы хотите, но что-то вроде:

import requests


data = requests.get('https://query1.finance.yahoo.com/v8/finance/chart/AACG?region=US&lang=en-US&includePrePost=false&interval=2m&range=1d&corsDomain=finance.yahoo.com&.tsrc=finance').json()


    data = data['chart']['result'][0]['meta']

    previous = data['previousClose']
    current = data['regularMarketPrice']

    change = round(current-previous, 4)

    chng_prct = (change/previous) *100

    if change > 0:
        sign = '+'
    else:
        sign = ''

    print ('%.04f  %s%.04f (%s%.02f%%)' %(current, sign, round(change,4), sign, chng_prct))

Вывод:

0.8000  +0.0283 (+3.67%)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...