Конкретный ответ на ваш вопрос заключается в том, что вы можете использовать class_='className'
вместо сопоставления тега div
s и класса attr
s. Проблема в вашем коде заключается в том, что класс HTML-тега 'priceText__1853e8a5'
не 'price'
Поскольку содержимое на веб-странице, которое вы хотите очистить, не является статичным и вместо этого заполняется серверным или клиентским сценарием, вы должны разрешить заполнению информации перед очисткой страницы. Я использовал Selenium для этого и добавил time.sleep(5)
, чтобы ждать 5 секунд для загрузки информации. Затем я использовал browser.page_source
, чтобы получить источник для страницы. Наконец, я смог получить исходный код страницы в soup
и найти тег в супе, чтобы извлечь из него текст.
В качестве примечания, причина, по которой я использовал find_all()
вместо find()
, заключалась в том, что я не знал, будет ли больше тегов с тем же классом.
from selenium import webdriver
from bs4 import BeautifulSoup
import time
browser = webdriver.Chrome(executable_path=r"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\selenium\\webdriver\\chromedriver_win32\\chromedriver.exe")
# above is my path to chromedriver, replace it with your own.
browser.maximize_window()
browser.get('https://www.bloomberg.com/quote/SPX:IND')
time.sleep(5) # wait 5 seconds for the page to load the js
pageSource = browser.page_source
soup = BeautifulSoup(pageSource, 'html.parser')
prices = soup.find_all(class_='priceText__1853e8a5')
price = prices[0].text
print(price)