屏幕抓取建议:交互图表

3 投票
1 回答
1040 浏览
提问于 2025-04-18 16:29

我最近跟着一些教程学习了如何用Python的BeautifulSoup库来抓取网页上的文本和链接。现在我想从以下链接抓取数据:

http://www.study.cam.ac.uk/undergraduate/apply/statistics/

这个页面底部有一个互动图表生成器,我想从中抓取所有的数据,而不想花很多时间一个一个手动记录下所有可能生成的图表的数值。我尝试用我那点初学者的技巧,但我不太清楚图表数据在HTML的哪个地方,而且HTML似乎还会根据我鼠标在屏幕上的位置而变化。

我的问题是:用这些工具抓取这些数据是否可行,如果可以的话,应该怎么做?

1 个回答

4

使用浏览器的开发者工具,你可以看到,当你点击 显示图表 按钮时,会发送一个 POST 请求到 http://www.study.cam.ac.uk/undergraduate/apply/statistics/data.php。这个请求的结果是一个 JSON 对象,里面包含了构建图表所需的所有数据。

你可以用 Python 来模拟这个请求,比如使用 requests 模块:

import requests

URL = "http://www.study.cam.ac.uk/undergraduate/apply/statistics/data.php"
HEADERS = {'X-Requested-With': 'XMLHttpRequest'}

data = {
    'when': 'year',
    'year': 2014,
    'applications': 'on',
    'offers': 'on',
    'acceptances': 'on',
    'groupby': 'college',
    'for-5-years-what': 'university'
}

response = requests.post(URL, data=data, headers=HEADERS)
print response.json()

这里不需要使用 BeautifulSoup。至少,根据我对你问题的理解是这样的。

撰写回答