Я пытаюсь получить полный HTML-код с ratemyprofessors.com, однако внизу страницы есть кнопка «Загрузить больше оценок», которая позволяет увидеть больше комментариев.

Я использую request.get (url) и beautifulsoup, но это дает только первые 20 комментариев. Есть ли способ, чтобы страница загружала все комментарии до того, как она вернется?

Вот то, что я сейчас делаю, что дает 20 самых популярных комментариев, но не все из них.

    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    comments = []
    for j in soup.findAll('div', attrs={'class': 'Comments__StyledComments-dzzyvm-0 dEfjGB'}):
        comments.append(j.text)
0
David Hafen 18 Апр 2020 в 21:07

1 ответ

Лучший ответ

BeautifulSoup - это скорее анализатор HTML для статических страниц, чем средство визуализации для более динамичных веб-приложений.

Вы можете добиться того, чего хотите, используя безголовый браузер через Selenium, визуализируя всю страницу и многократно щелкая ссылку «Дополнительно», пока больше не будет загружаться.

Пример: Переход по ссылке через селен

Поскольку вы уже используете запросы, другой вариант, который может работать, - это Requests-HTML, который также поддерживает динамическую визуализацию путем вызова .html.render() для объекта ответа.

Пример: https://requests-html.kennethreitz.org/index. html # requests_html.HTML.render

Ссылка: Переход по ссылке с помощью beautifulsoup в Python

0
Taylor Edmiston 18 Апр 2020 в 18:23