Как парсить данные, подгружаемые прокруткой страницы?

Доброго времени суток!
Недавно начал учить Python и откопал у себя курс возрастом около 2 лет по парсингу. В первом уроке были примеры с сайтом Wordpress.org, там всё было хорошо, на сайте были изменения, но они касались больше наполнения, нежели структуры (вёрстки), а вот в следующем уроке рассказывается о парсинге табличных данных на примере сайта coinmarketcap.com, который претерпел изменения в структуре, как я понимаю, потому что в видео данный код получает все 100 значений, а сейчас только первые 10 и затем выдает ошибку AttributeError: 'NoneType' object has no attribute 'text'. Я понимаю почему возникает ошибка, программа "не видит" нужные данные, поскольку они подгружаются в процессе скроллинга к концу страницы, как мне кажется.
Как изменить данный код, чтобы он обрабатывал все 100 позиций с первой страницы этого сайта?
P.S. длина списка, собранного по тегу tr равна 100, значит строки с 11 по 100 считаются пустыми.
import requests
from bs4 import BeautifulSoup

def get_html(url):
	r = requests.get(url)
	return r.text

def get_page_data(html):
	soup = BeautifulSoup(html, 'lxml')

	trs = soup.find('table').find('tbody').find_all('tr')
	print(len(trs))

	for tr in trs:
		tds = tr.find_all('td')
		name = tds[2].find('a').find('p').text
		print(name)

def main():
	url = 'https://coinmarketcap.com'
	get_page_data(get_html(url))

if __name__ == '__main__':
	main()


Надеюсь услышать советы матёрых программистов и спасибо за внимание!
  • Вопрос задан
  • 493 просмотра
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Смотрим вкладку Сесть в консоли и видим, что данные подгружаются со ссылок:
Первая страница: https://api.coinmarketcap.com/data-api/v3/cryptocu...
Вторая страница: https://api.coinmarketcap.com/data-api/v3/cryptocu...
Третья страница: https://api.coinmarketcap.com/data-api/v3/cryptocu...
Их и парсите, как JSON. Логика формирования интуитивно понятна думаю.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы