Jak załadować wszystkie wpisy z nieskończonego przewijania naraz, aby przeanalizować kod HTML w pythonie

Próbuję wydobyć informacje zta strona. Strona ładuje po 10 elementów na raz i muszę przewinąć, aby załadować wszystkie wpisy (w sumie 100). Jestem w stanie przeanalizować kod HTML i uzyskać informacje, których potrzebuję dla pierwszych 10 wpisów, ale chcę w pełni załadować wszystkie wpisy przed analizowaniem kodu HTML.

Używam Pythona, żądań i BeautifulSoup. Sposób, w jaki analizuję stronę podczas ładowania pierwszych 10 wpisów, wygląda następująco:

from bs4 import BeautifulSoup
import requests
s = requests.Session()
r = s.get('https://medium.com/top-100/december-2013')
page = BeautifulSoup(r.text)

Ale to tylko ładuje pierwszych 10 wpisów. Spojrzałem więc na stronę i dostałem żądanie AJAX używane do załadowania kolejnych wpisów i otrzymałem odpowiedź, ale jest to w funky JSON i wolę użyć parsera HTML zamiast parsowania JSON. Oto kod:

from bs4 import BeautifulSoup
import requests
import json
s = requests.Session()
url = 'https://medium.com/top-100/december-2013/load-more'
payload = {"count":100}
r = s.post(url, data=payload)
page = json.loads(r.text[16:]) #skip some chars that throw json off

Daje mi to dane, ale jest to bardzo długi i skomplikowany JSON, wolałbym raczej załadować wszystkie dane na stronie i po prostu przeanalizować HTML. Ponadto renderowany HTML dostarcza więcej informacji niż odpowiedź JSON (tj. Nazwa autora zamiast niejasnego identyfikatora użytkownika itp.) Podobne pytanie byłotutaj ale brak odpowiednich odpowiedzi. Idealnie chciałbym wykonać połączenie POST inastępnie zażądaj kodu HTML i przeanalizuj go, ale nie byłem w stanie tego zrobić.

questionAnswers(3)

yourAnswerToTheQuestion