Cómo cargar todas las entradas en un desplazamiento infinito a la vez para analizar el HTML en python

Estoy tratando de extraer información deesta página. La página carga 10 artículos a la vez, y debo desplazarme para cargar todas las entradas (para un total de 100). Puedo analizar el HTML y obtener la información que necesito para las primeras 10 entradas, pero quiero cargar todas las entradas completamente antes de analizar el HTML.

Estoy usando python, peticiones y BeautifulSoup. La forma en que analizo la página cuando se carga con las primeras 10 entradas es la siguiente:

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

Pero esto solo carga las 10 primeras entradas. Así que miré la página y obtuve la solicitud de AJAX para cargar las entradas subsiguientes y recibí una respuesta, pero está en un JSON funky y prefiero usar el analizador HTML en lugar de analizar JSON. Aquí está el código:

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

Esto me da los datos, pero está en un JSON muy largo y complicado, preferiría cargar todos los datos en la página y simplemente analizar el HTML. Además, el HTML representado proporciona más información que la respuesta JSON (es decir, el nombre del autor en lugar de un ID de usuario oculto, etc.) Hubo una pregunta similaraquí pero no hay respuestas relevantes. Idealmente quiero hacer la llamada POST yentonces solicite el HTML y analícelo, pero no he podido hacer eso.

Respuestas a la pregunta(3)

Su respuesta a la pregunta