Парсинг табличных данных

import requests
from bs4 import BeautifulSoup


url = 'https://news.mail.ru/currency/src/CBRF/charcode/USD/'
data = requests.get(url).text
block = BeautifulSoup(data, 'lxml')
heads = block.find('tbody', class_='sc-fvxzrP DXNGm').find_all('tr', class_='sc-jQrDum klKPSx')
for i in heads:
    print(i.text)

При запуске кода выдает ошибку: heads = block.find('tbody', class_='sc-fvxzrP DXNGm').find_all('tr', class_='sc-jQrDum klKPSx') AttributeError: 'NoneType' object has no attribute 'find_all' Подскажите в чем причина ошибки?


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

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

selenium - решение. Здесь я довольно понятно объяснил

import bs4
import time
from selenium import webdriver  # pip install selenium
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager  # pip install webdriver-manager


with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:  # Открываем хром
    driver.get("https://news.mail.ru/currency/src/CBRF/charcode/USD/")  # Открываем страницу
    time.sleep(5)  # Время на прогрузку страницы
    soup = bs4.BeautifulSoup(driver.page_source, 'html.parser')

print(soup.find("tbody", class_="sc-fvxzrP DXNGm"))

→ Ссылка