小编use*_*455的帖子

如何一次加载无限滚动中的所有条目以解析python中的HTML

我试图从这个页面中提取信息.该页面一次加载10个项目,我需要滚动以加载所有条目(总共100个).我能够解析HTML并获取前10个条目所需的信息,但我想在解析HTML之前完全加载所有条目.

我正在使用python,requests和BeautifulSoup.我用前10个条目加载时解析页面的方式如下:

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

但这只会加载前10个条目.所以我查看了页面,得到了用于加载后续条目的AJAX请求,我得到了一个响应,但它是一个时髦的JSON,我宁愿使用HTML解析器而不是解析JSON.这是代码:

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
Run Code Online (Sandbox Code Playgroud)

这给了我数据,但它是一个非常冗长和复杂的JSON,我宁愿加载页面上的所有数据,只需解析HTML.此外,呈现的HTML提供了比JSON响应更多的信息(即作者的名称而不是模糊的用户ID等).这里有类似的问题,但没有相关的答案.理想情况下,我想进行POST调用,然后请求HTML并解析它,但我无法做到这一点.

html python json beautifulsoup python-requests

20
推荐指数
2
解决办法
2万
查看次数

标签 统计

beautifulsoup ×1

html ×1

json ×1

python ×1

python-requests ×1